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下载
最代码最近下载分享源代码列表最近下载
675104182 LV132020年9月22日
月亮月亮月亮星星
荒唐的羊 LV262020年7月1日
太阳月亮月亮星星星星
java小书童 LV142020年6月9日
月亮月亮月亮星星星星
15966848095 LV192020年2月8日
太阳星星星星星星
635969151 LV112019年12月18日
月亮月亮星星星星星星
candice123 LV72019年12月11日
月亮星星星星星星
qweqweqwe321321233 LV102019年11月5日
月亮月亮星星星星
diedie LV62019年10月17日
月亮星星星星
MasterJK LV52019年9月11日
月亮星星
wangshule LV122019年8月6日
月亮月亮月亮
最代码最近浏览分享源代码列表最近浏览
hahhah LV12月25日
星星
风雨不怕 LV41月25日
月亮
泉知晓2020年12月29日
暂无贡献等级
yellowfor LV12020年12月28日
星星
afsdfdsg2020年12月19日
暂无贡献等级
guibian2020年12月8日
暂无贡献等级
6411145582020年12月6日
暂无贡献等级
dsdsdasdads2020年11月29日
暂无贡献等级
renatus LV12020年11月25日
星星
chenxueyu2020年11月20日
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友