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


alexcheung LV3
2022年12月17日
杨少聪 LV5
2021年6月10日
一两天_ LV1
2021年5月27日
675104182 LV14
2020年9月22日
荒唐的羊 LV27
2020年7月1日
java小书童 LV17
2020年6月9日
15966848095 LV22
2020年2月8日
635969151 LV12
2019年12月18日
candice123 LV7
2019年12月11日
qweqweqwe321321233 LV10
2019年11月5日

yangxb2 LV9
7月11日
hougui LV1
6月20日
17683946472 LV9
6月8日
泓鼎168 LV19
5月10日
微信网友_6444139264921600 LV5
4月27日
香菇肉饼汤 LV7
4月13日
想把它染成绿色
3月1日
暂无贡献等级
special__tt LV1
2022年10月28日
szl294 LV1
2022年10月21日
ruifeng LV4
2022年7月22日