badboy的gravatar头像
badboy2014-02-25 00:16:19

java swing开发FlappyBird游戏—仅供娱乐

运行截图:

java swing开发FlappyBird游戏—仅供娱乐

package com.tarena.bird;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class World extends JPanel {
    
    Column column1;
    Column column2;
    Bird bird;
    Ground ground;
    BufferedImage background;
    BufferedImage gameoverImg;
    BufferedImage startImg;
    
    boolean start;
    int score;
    boolean gameOver;

    public World() throws IOException {
        background = ImageIO.read(getClass().getResource("bg.png"));
        gameoverImg = ImageIO.read(getClass().getResource("gameover.png"));
        startImg = ImageIO.read(getClass().getResource("start.png"));
        start();
    }
    public void start(){
        try {
            start = false;
            gameOver = false;
            bird = new Bird();
            ground = new Ground(400); 
            column1 = new Column(320 + 100);
            column2 = new Column(320 + 100 + 180);
            score = 0;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void action() throws Exception{        
        addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                if (gameOver) {
                    start();
                    return;
                }
                start = true;
                bird.flappy();
            }
        });
        requestFocus();
        addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if(e.getKeyCode()==KeyEvent.VK_SPACE){
                    if(gameOver){
                        start();
                        return;
                    }
                    start = true;
                    bird.flappy();
                }
            }
        });
        //主循环, 时间间隔是 1/60 秒
        while(true){
            if(start && !gameOver){
                bird.step();
                column1.step();
                column2.step();
                //检查是否通过柱子了
                if(bird.pass(column1, column2)){
                    score++;
                }
                if(bird.hit(column1, column2, ground)){
                    start = false;
                    gameOver = true;
                }
            }
            ground.step();
            repaint();
            Thread.sleep(1000/60);
        }
                
    }
    @Override
    public void paint(Graphics g) {
        //抗锯齿代码
        Graphics2D g2 = (Graphics2D)g;
        RenderingHints qualityHints = new RenderingHints(
                RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        qualityHints.put(RenderingHints.KEY_RENDERING,
                RenderingHints.VALUE_RENDER_QUALITY);
        g2.setRenderingHints(qualityHints);
        //绘制背景
        g.drawImage(background, 0, 0, null);
        //绘制柱子
        column1.paint(g);
        column2.paint(g); 
        //绘制地面
        ground.paint(g);
        //绘制分数
        Font font = new Font(Font.MONOSPACED, Font.BOLD, 30);
        g.setFont(font);
        g.setColor(Color.white);
        g.drawString(score+"", 30, 50);
        //绘制小鸟
        bird.paint(g);
        //绘制结束状态
        if(gameOver){
            //g.drawString("Game Over!", 70 , 190);
            g.drawImage(gameoverImg, 0, 0, null);
            return;
        }
        if(! start){
            //g.drawString("Start >>>", bird.x+35, bird.y);
            g.drawImage(startImg, 0, 0, null);
        }
    }
    public static void main(String[] args) throws Exception {
        JFrame frame = new JFrame("飞扬小鸟");
        World world = new World();
        frame.add(world);
        frame.setSize(325, 505);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        world.action();
    }
}

 


AXIN编辑于2014-2-25 11:18:15


打赏

文件名:FlappyBird.zip,文件大小:133.415K下载
最代码最近下载分享源代码列表最近下载
杨少聪 LV56月10日
月亮星星
一两天_ LV15月27日
星星
675104182 LV132020年9月22日
月亮月亮月亮星星
荒唐的羊 LV272020年7月1日
太阳月亮月亮星星星星星星
java小书童 LV142020年6月9日
月亮月亮月亮星星星星
15966848095 LV202020年2月8日
太阳月亮
635969151 LV122019年12月18日
月亮月亮月亮
candice123 LV72019年12月11日
月亮星星星星星星
qweqweqwe321321233 LV102019年11月5日
月亮月亮星星星星
diedie LV62019年10月17日
月亮星星星星
最代码最近浏览分享源代码列表最近浏览
GikD0806 LV29月8日
星星星星
flappybird38月12日
暂无贡献等级
1231dsfdsf LV16月28日
星星
cskjdlp LV16月25日
星星
ziluoalow LV16月21日
星星
杨少聪 LV56月7日
月亮星星
一两天_ LV15月25日
星星
zq1234仲 LV15月25日
星星
wl2301821 LV75月9日
月亮星星星星星星
凯凯4月19日
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友