




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、package flappyBrid01;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import javax.imageio.ImageIO;import javax.sw
2、ing.JFrame;import javax.swing.JPanel;public class BirdGame extends JPanel Bird bird;Column column1, column2;Ground ground;BufferedImage backGround;/ 分数int score;/ 标志游戏是否结束/ boolean gameOver;BufferedImage gameOverImage;BufferedImage startImage;/ 游戏状态int state;public static final int START = 0;/ 常量名字大
3、写public static final int RUNNING = 1;public static final int GAMEOVER = 2;public BirdGame() throws Exception score = 0;bird = new Bird();column1 = new Column(1);column2 = new Column(2);ground = new Ground();backGround = ImageIO.read(getClass().getResource(bg.png);/ gameOver = false;state = START;gam
4、eOverImage = ImageIO.read(getClass().getResource(gameover.png);startImage = ImageIO.read(getClass().getResource(start.png);/ 游戏启动方法public static void main(String args) throws Exception JFrame frame = new JFrame(Flappy Bird);BirdGame game = new BirdGame();frame.add(game);frame.setSize(432, 644);frame
5、.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);game.action();/ 画图Override/认定是重写,下面有错就会指出public void paint(Graphics g) g.drawImage(backGround, 0, 0, null);g.drawImage(column1.image, column1.x - column1.width / 2, column1.y- column1.height / 2,
6、 null);g.drawImage(column2.image, column2.x - column2.width / 2, column2.y- column2.height / 2, null);g.drawImage(ground.image, ground.x, ground.y, null);/ 鸟的旋转放在鸟的前面Graphics2D g2 = (Graphics2D) g;/ 强转g2.rotate(-bird.alpha, bird.x, bird.y);/ (角度,中心点的x,中心点的一)g.drawImage(bird.image, bird.x - bird.widt
7、h / 2, bird.y - bird.height/ 2, null);/ 画笔再转回来g2.rotate(bird.alpha, bird.x, bird.y);Font f = new Font(Font.SANS_SERIF, Font.BOLD, 40);g.setFont(f);g.drawString( + score, 43, 63);g.setColor(new Color(255, 255, 255);g.drawString( + score, 40, 60);/* * if (gameOver) g.drawImage(gameOverImage, 0, 0, nul
8、l); */switch (state) case GAMEOVER:g.drawImage(gameOverImage, 0, 0, null);break;case START:g.drawImage(startImage, 0, 0, null);break;/ 动 图片移动public void action() throws Exception MouseListener l = new MouseAdapter() Overridepublic void mousePressed(MouseEvent e) try switch (state) case GAMEOVER:/ 游戏
9、结束,所有游戏内容重置bird = new Bird();column1 = new Column(1);column2 = new Column(2);ground = new Ground();score = 0;/ 改变状态state = START;break;case START:state = RUNNING;case RUNNING:/ 鸟向上飞bird.fly(); catch (Exception e1) e1.printStackTrace();this.addMouseListener(l);while (true) /* * if (!gameOver) ground.
10、step(); column1.step(); column2.step(); * bird.step(); bird.flappy(); * if (bird.hit(ground) | bird.hit(column1) | bird.hit(column2)|bird.hit() * gameOver = true; */switch (state) case START:/ 鸟挥动bird.flappy();/ 地面移动ground.step();break;case RUNNING:ground.step();column1.step();column2.step();bird.st
11、ep();bird.flappy();/ 如果撞了 改变状态if (bird.hit(ground) | bird.hit(column1) | bird.hit(column2)|bird.hit() state = GAMEOVER;/ 计分if (bird.x = column1.x | bird.x = column2.x) score+;repaint();/ 太快,需要线程sleepThread.sleep(1000 / 60);package flappyBrid01;import java.awt.image.BufferedImage;import javax.imageio
12、.ImageIO;/鸟类public class Bird BufferedImage image;int x, y;int width, height;int size;/ 鸟的大小。用于做碰撞检测。/ 增加属性计算鸟的位置double g;/ 重力加速度double t;/ 两次位置的时间double v0;/ 初始速度double speed;/ 经过t时间的速度。鸟当前的速度。double s;/ 经过时间t之后的 鸟的位移double alpha;/ 鸟的倾角 弧度单位/ 是鸟的动画帧BufferedImage images;int index;public Bird() throw
13、s Exception image = ImageIO.read(getClass().getResource(0.png);width = image.getWidth();height = image.getHeight();x = 132;y = 280;size = 40;g = 4;v0 = 20;t = 0.25;speed = v0;s = 0;alpha = 0;images = new BufferedImage8;for (int i = 0; i images.length; i+) imagesi = ImageIO.read(getClass().getResourc
14、e(i + .png);index = 0;public void flappy() index+;image = images(index / 10) % 8;/ 除10的意义,index地面移动10个像素鸟动一下。余8的意义,图片只有8张。public void step() double v = speed;s = v * t + g * t * t / 2;y = y - (int) s;speed = v - g * t;alpha = Math.atan(s / 8);public void fly() / 重新设置初始速度,重新向上飞speed = v0;public boole
15、an hit() boolean hit = y - size / 2 ground.y;if (hit) / 把鸟放在地上y = ground.y - size / 2;alpha = -Math.PI / 2;return hit;public boolean hit(Column c) / 鸟飞进柱子范围if (x c.x - size / 2 - c.width / 2& x = c.y - c.gap / 2 + size / 2& y = c.y + c.gap / 2 - size / 2) return false;return true;return false;packag
16、e flappyBrid01;import java.awt.image.BufferedImage;import java.util.Random;import javax.imageio.ImageIO;/柱类public class Column BufferedImage image;int x, y;/ 附中心位置int width, height;/ 柱子间距.144int gap;/ 两根柱子之间的距离.245int distance;Random ran = new Random();/ 构造柱子对象,初始化属性值public Column(int n) throws Exce
17、ption/ n是第几根柱子 / 抛所有image = ImageIO.read(getClass().getResource(column.png);width = image.getWidth();height = image.getHeight();gap = 144;distance = 245;x = 550 + (n - 1) * distance;/ 550,第一根柱子与y轴的距离y = ran.nextInt(218) + 132;/ 最高中心点218到最低中心点350。public void step() x-;if (x + width / 2 = 0) / if(x = -width/2)x = distance * 2 - width / 2;/ x=432 + width/2;y = ran.nextInt(218) + 132;package flappyBrid01;import java.awt.image.BufferedImage;import javax.imageio.Im
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 英语加盟合同协议书
- 股票代持合同协议书
- 资助资金用款协议书
- 街舞机构合伙协议书
- 自费项目免责协议书
- 租赁协议防火协议书
- 货物破损免责协议书
- 租赁房子解约协议书
- 《应力状态下的材料性能分析》课件
- 班会劳动课件
- 毛竹脚手架搭设施工方案
- 郑州住宅小区调研
- 基础会计练习题及答案
- 鞋厂制革企业安全风险分级管控和隐患排查治理双体系方案资料(2022-2023新标准)
- 消防应急预案流程图
- 2022年最新小升初英语试卷(含答案)
- 二环庚二烯(2,5-降冰片二烯)的理化性质及危险特性表
- “转观念、勇担当、强管理、创一流”对标工作整改方案
- 模具试模通知单
- 全科医师培训的全科门诊主要内容教学
- 苏州纳米所综合考试要点
评论
0/150
提交评论