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小书童 LV18
2020年6月9日
15966848095 LV22
2020年2月8日
635969151 LV12
2019年12月18日
candice123 LV7
2019年12月11日
qweqweqwe321321233 LV10
2019年11月5日
最近浏览
1661950467 LV2
10月12日
ggflqq LV1
6月25日
鬼屋报道 LV3
6月1日
long123_356 LV7
5月18日
陈小灏 LV15
2023年12月15日
微信网友_6699076084797440 LV7
2023年10月30日
jiemomo LV12
2023年10月19日
yangxb2 LV10
2023年7月11日
hougui LV1
2023年6月20日
17683946472 LV9
2023年6月8日