FlappyBird—仅供娱乐
来源:互联网 发布:神周瑜皮肤 知乎 编辑:程序博客网 时间:2024/04/30 06:44
原文:FlappyBird—仅供娱乐
源代码下载地址:http://www.zuidaima.com/share/1710876338916352.htm
运行截图:
001
package
com.tarena.bird;
002
003
import
java.awt.Color;
004
import
java.awt.Font;
005
import
java.awt.Graphics;
006
import
java.awt.Graphics2D;
007
import
java.awt.RenderingHints;
008
import
java.awt.event.KeyAdapter;
009
import
java.awt.event.KeyEvent;
010
import
java.awt.event.MouseAdapter;
011
import
java.awt.event.MouseEvent;
012
import
java.awt.image.BufferedImage;
013
import
java.io.IOException;
014
015
import
javax.imageio.ImageIO;
016
import
javax.swing.JFrame;
017
import
javax.swing.JPanel;
018
019
public
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,
0
,
0
,
null
);
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+
""
,
30
,
50
);
121
//绘制小鸟
122
bird.paint(g);
123
//绘制结束状态
124
if
(gameOver){
125
//g.drawString("Game Over!", 70 , 190);
126
g.drawImage(gameoverImg,
0
,
0
,
null
);
127
return
;
128
}
129
if
(! start){
130
//g.drawString("Start >>>", bird.x+35, bird.y);
131
g.drawImage(startImg,
0
,
0
,
null
);
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(
325
,
505
);
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
- FlappyBird—仅供娱乐
- 关于央视着火(仅供娱乐)
- 数独游戏 仅供娱乐
- 人品计算器 (仅供娱乐) - 笑不死算我的!
- 2012年必备的逃生指南(仅供娱乐)
- 无聊写的东西,勿吐槽,仅供本人娱乐
- 一些DuangDuang的C++题目(仅供娱乐)
- 仅供娱乐: 用中文命名,让汉字走向程序开发中!
- 以下是我个人写的一段小程序,仅供娱乐,呵呵!
- 影片《刺杀金正恩》中的地理学错误和穿帮镜头(仅供娱乐)
- SDK更新失败无法翻墙?这是最笨的办法-仅供娱乐,请勿模仿
- Android Studio "佛祖保佑 永无bug" 注释模板设置详解(仅供娱乐)
- Android Studio "佛祖保佑 永无bug" 注释模板设置详解(仅供娱乐)
- Android Studio "佛祖保佑 永无bug" 注释模板设置详解(仅供娱乐)
- 佛祖保佑 永无bug" 注释模板设置详解(仅供娱乐)
- 人不可以把钱带进坟墓,但钱可以把人带进坟墓(仅供娱乐)
- 第四次上机实验 (免责)这个程序仅供娱乐,执行请用虚拟机,一切后果与本人无关
- android WebView将新浪天气为我所用 ------>仅供娱乐(一个android webview 执行js的简单框架)
- MyBatis mapper文件中的变量引用方式#{}与${}的差别
- LeetCode -- Word Ladder
- MAC下配置(嗯,不用搭建)SVN服务器
- 日历签到demo 实现记录
- Java语言基础之基本数据类型与数据类型转换
- FlappyBird—仅供娱乐
- UIWebView添加头部视图
- Nodejs-connect 中间件
- 三种web性能压力测试工具
- 【C++】基础知识—内联(置)函数及register关键字
- LeetCode -- Word Pattern
- perror(const char)
- 我的博客开张了!
- LeetCode -- Word Search