badboy
2014-02-25 00:16:19
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
下载
- /
- /FlappyBird
- /FlappyBird/.classpath
- /FlappyBird/.project
- /FlappyBird/.settings
- /FlappyBird/.settings/org.eclipse.jdt.core.prefs
- /FlappyBird/bin
- /FlappyBird/bin/com
- /FlappyBird/bin/com/nnsh
- /FlappyBird/bin/com/nnsh/bird
- /FlappyBird/bin/com/nnsh/bird/0.png
- /FlappyBird/bin/com/nnsh/bird/1.png
- /FlappyBird/bin/com/nnsh/bird/2.png
- /FlappyBird/bin/com/nnsh/bird/Bird.class
- /FlappyBird/bin/com/nnsh/bird/bg.png
- /FlappyBird/bin/com/nnsh/bird
- /FlappyBird/bin/com/nnsh
- /FlappyBird/bin/com
- /FlappyBird/src
- /FlappyBird/src/com
- /FlappyBird/src/com/tarena
- /FlappyBird/src/com
- /FlappyBird
相关代码
- java写得一个模拟浏览器源码
- java swing实现的计算器实例
- 原 java swing编写简易聊天室,java初学者可以学习java线程与网络编程的基础知识
- 证 java swing编写的一个打字小游戏
- java swing编写的基于JPJF的一个小游戏(类似男人坚持30秒)
- 证 java swing开发俄罗斯方块游戏
- 证 贪吃蛇小游戏 java swing
- 证 基于java swing实现的下雪动态
- java swing颜色选择器代码例子下载
- java Swing开发简单备忘录源代码下载
- java swing编写的简易计算器程序,实现混合四则运算
- 原 java swing开发实现的记事本源代码实例下载
最近下载
alexcheung LV3
2022年12月17日
杨少聪 LV5
2021年6月10日
一两天_ LV1
2021年5月27日
675104182 LV14
2020年9月22日
荒唐的羊 LV27
2020年7月1日
java小书童 LV18
2020年6月9日
15966848095 LV22
2020年2月8日
635969151 LV12
2019年12月18日
candice123 LV7
2019年12月11日
qweqweqwe321321233 LV10
2019年11月5日
最近浏览
vincemokea LV9
10月11日
随便取个名字_哈哈 LV27
6月23日
1661950467 LV2
2024年10月12日
ggflqq LV1
2024年6月25日
鬼屋报道 LV3
2024年6月1日
long123_356 LV8
2024年5月18日
陈小灏 LV18
2023年12月15日
微信网友_6699076084797440 LV7
2023年10月30日
jiemomo LV12
2023年10月19日
yangxb2 LV10
2023年7月11日





