FlappyBird—仅供娱乐

来源:互联网 发布:神周瑜皮肤 知乎 编辑:程序博客网 时间:2024/04/30 06:44

原文:FlappyBird—仅供娱乐

源代码下载地址:http://www.zuidaima.com/share/1710876338916352.htm

运行截图:

FlappyBird—仅供娱乐

001package com.tarena.bird;
002 
003import java.awt.Color;
004import java.awt.Font;
005import java.awt.Graphics;
006import java.awt.Graphics2D;
007import java.awt.RenderingHints;
008import java.awt.event.KeyAdapter;
009import java.awt.event.KeyEvent;
010import java.awt.event.MouseAdapter;
011import java.awt.event.MouseEvent;
012import java.awt.image.BufferedImage;
013import java.io.IOException;
014 
015import javax.imageio.ImageIO;
016import javax.swing.JFrame;
017import javax.swing.JPanel;
018 
019public class World extends JPanel {
020     
021    Column column1;
022    Column column2;
023    Bird bird;
024    Ground ground;
025    BufferedImage background;
026    BufferedImage gameoverImg;
027    BufferedImage startImg;
028     
029    boolean start;
030    int score;
031    boolean gameOver;
032 
033    public World() throws IOException {
034        background = ImageIO.read(getClass().getResource("bg.png"));
035        gameoverImg = ImageIO.read(getClass().getResource("gameover.png"));
036        startImg = ImageIO.read(getClass().getResource("start.png"));
037        start();
038    }
039    public void start(){
040        try {
041            start = false;
042            gameOver = false;
043            bird = new Bird();
044            ground = new Ground(400);
045            column1 = new Column(320 100);
046            column2 = new Column(320 100 180);
047            score = 0;
048        catch (Exception e) {
049            e.printStackTrace();
050        }
051    }
052    public void action() throws Exception{       
053        addMouseListener(new MouseAdapter() {
054            @Override
055            public void mousePressed(MouseEvent e) {
056                if (gameOver) {
057                    start();
058                    return;
059                }
060                start = true;
061                bird.flappy();
062            }
063        });
064        requestFocus();
065        addKeyListener(new KeyAdapter() {
066            @Override
067            public void keyPressed(KeyEvent e) {
068                if(e.getKeyCode()==KeyEvent.VK_SPACE){
069                    if(gameOver){
070                        start();
071                        return;
072                    }
073                    start = true;
074                    bird.flappy();
075                }
076            }
077        });
078        //主循环, 时间间隔是 1/60 秒
079        while(true){
080            if(start && !gameOver){
081                bird.step();
082                column1.step();
083                column2.step();
084                //检查是否通过柱子了
085                if(bird.pass(column1, column2)){
086                    score++;
087                }
088                if(bird.hit(column1, column2, ground)){
089                    start = false;
090                    gameOver = true;
091                }
092            }
093            ground.step();
094            repaint();
095            Thread.sleep(1000/60);
096        }
097                 
098    }
099    @Override
100    public void paint(Graphics g) {
101        //抗锯齿代码
102        Graphics2D g2 = (Graphics2D)g;
103        RenderingHints qualityHints = new RenderingHints(
104                RenderingHints.KEY_ANTIALIASING,
105                RenderingHints.VALUE_ANTIALIAS_ON);
106        qualityHints.put(RenderingHints.KEY_RENDERING,
107                RenderingHints.VALUE_RENDER_QUALITY);
108        g2.setRenderingHints(qualityHints);
109        //绘制背景
110        g.drawImage(background, 00null);
111        //绘制柱子
112        column1.paint(g);
113        column2.paint(g);
114        //绘制地面
115        ground.paint(g);
116        //绘制分数
117        Font font = new Font(Font.MONOSPACED, Font.BOLD, 30);
118        g.setFont(font);
119        g.setColor(Color.white);
120        g.drawString(score+""3050);
121        //绘制小鸟
122        bird.paint(g);
123        //绘制结束状态
124        if(gameOver){
125            //g.drawString("Game Over!", 70 , 190);
126            g.drawImage(gameoverImg, 00null);
127            return;
128        }
129        if(! start){
130            //g.drawString("Start >>>", bird.x+35, bird.y);
131            g.drawImage(startImg, 00null);
132        }
133    }
134    public static void main(String[] args) throws Exception {
135        JFrame frame = new JFrame("飞扬小鸟");
136        World world = new World();
137        frame.add(world);
138        frame.setSize(325505);
139        frame.setResizable(false);
140        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
141        frame.setLocationRelativeTo(null);
142        frame.setVisible(true);
143        world.action();
144    }
145}
0 0
原创粉丝点击