免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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.swing.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;/ 常量名字大写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;gameOverImage = 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.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, 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.width / 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, null); */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:/ 游戏结束,所有游戏内容重置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.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.step();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.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() throws 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().getResource(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 boolean 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;package 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 Exception/ 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宿迁市人民医院儿童心律失常急诊处理考核
- 济南市中医院腹膜后B超诊断考核
- 无锡市人民医院护理质量标准制定考核
- 青岛市中医院护理培训课程开发考核
- 芜湖市人民医院微创手术进阶考核
- 龙岩市中医院腕舟骨骨折手术治疗考核
- 景德镇市中医院不规则抗体鉴定策略设计与结果分析试题
- 宿迁市人民医院消化内镜中心主任竞聘科室运营考核全案
- 舟山市中医院腹腔镜技术模拟训练考核
- 宁波市人民医院呼吸科临床研究协调员GCP规范入门考核
- 2025至2030全球及中国储罐服务行业产业运行态势及投资规划深度研究报告
- 复古蛋糕裱花课件
- 2025药物临床试验质量管理规范GCP考试真题及答案
- 口腔麻醉案例讲解
- 2025年度山西地质集团有限公司秋季校园招聘302人笔试参考题库附带答案详解
- 2025至2030中国康养产业市场深度调研及发展前景趋势报告
- 东北龙江振兴课件
- 矿山科技质量培训大纲
- 2024年重庆航天职业技术学院公开招聘辅导员笔试题含答案
- 冶金工程专业汇报
- 玻璃幕墙安装技术规范
评论
0/150
提交评论