最代码广告位
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下载
最代码最近下载分享源代码列表最近下载
15966848095 LV132月8日
月亮月亮月亮星星
635969151 LV92019年12月18日
月亮月亮星星
candice123 LV72019年12月11日
月亮星星星星星星
qweqweqwe321321233 LV102019年11月5日
月亮月亮星星星星
diedie LV62019年10月17日
月亮星星星星
MasterJK LV52019年9月11日
月亮星星
wangshule LV122019年8月6日
月亮月亮月亮
1564dgd4g834654r LV12019年6月26日
星星
badboy LV62019年6月24日
月亮星星星星
zhjwgs LV132019年6月13日
月亮月亮月亮星星
最代码最近浏览分享源代码列表最近浏览
aiunng前天
暂无贡献等级
暂无贡献等级
1798672867 LV93月21日
月亮月亮星星
hiking LV13月14日
星星
xianjing LV13月12日
星星
wangzff LV32月26日
星星星星星星
暂无贡献等级
15966848095 LV132月8日
月亮月亮月亮星星
wei112233 LV122月2日
月亮月亮月亮
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友