




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MyPanelGameFrame稻草气球图层柱子移动图层分数图层游戏主窗口示意图小鸟图层草地图层类的关联图实例化游戏入口_Main游戏控制类GameControl鸟类Birds游戏面板类MyPanel游戏框架类GameFrame控制小鸟飞行根据控制类的消息作出及时更新控制游戏的进行,分数的实现提供各组件实时信息提供小鸟的重力系统飞行 提供实时小鸟坐标绘制小鸟的飞行轨迹面板的显示与隐藏Birds类public class Birds private int x;/小鸟横坐标 private int y;/小鸟纵坐标 private int speed;/小鸟移动速度 private int gravity; /重力加速度 public void drop();/小鸟以重力加速度为gravity飞行,运动范围为0-418 public int getX();/获取小鸟横坐标 public int getY(); /获取小鸟纵坐标 public void setSpeed(int );/设置小鸟向上的速度,使其能够飞行 public void Reset();/游戏重新开始后将小鸟的属性重新设置为下面的初始状态 public Birds() /鸟的初始位置为地面 x = 90; y = 200; speed = 0; gravity = 1; Void setSpeed(int)Int getY()int getX()利用向上或向下的速度运动绘图Mypanel.repaint()Void drop()GamePanel类public class MyPanel extends JPanel private ImageIcon iconEarthLeft,iconEarthRight,iconBirdM,iconBirdA,iconBirdU,iconUPillar,iconDPillar,iconStart,iconTip;/地面图片左,地面图片右,小鸟图片(上,中,下),上面的柱子图片/下面的柱子图片,开始按钮图片,提示图片private ImageIcon iconNumber;/分数图片private ImageIcon iconDay;/背景图片private JButton start;/开始按钮private JLabel score,tip;/分数,提示标签private int earth_x;/地面x坐标private int front_x,rear_x,frontUp,rearUp;/前一个柱子的x,后一个柱子的x,前一柱子/的高,后一个柱子的高private int birdID;/小鸟类型private int grade;/当前分数private int record;/最高分数记录private int pillarSpeed;/柱子速度private Birds bird;/鸟类实例对象private Boolean isOver;/游戏是否结束public final static int PILLAR_WIDTH = 65;/柱子长度public final static int PILLAR_GAP = 110;/柱子间隙高度public final static int BIRD_WIDTH = 45;/鸟长度public final static int BIRD_HEIGHT = 30;/鸟高度public final static int SCREEN_WIDTH = 388;/界面宽度public final static int DAY_HEIGHT = 445;/城市背景高度public final static int SCORE_WIDTH = 30;/分数宽度public final static int SCORE_HEIGHT = 40;/分数高度 public void paintComponent(Graphics g); public int getPillarUp();/通过随机数随机得到上面的柱子高,从而通过(背景高-柱子间隙/高)求的下面的柱子顶部坐标public MyPanel();/初始化MyPanel的所有变量,可按如下方式初始化,图片变量根据实际/情况找到对应的路径 public void Reset()/游戏重新开始后重置游戏界面 earth_x = 0; front_x = -200; rear_x = -500; grade = 0; pillarSpeed = 3; isOver = false; frontUp = (int)(Math.random()*150+100); rearUp = (int)(Math.random()*150+100); bird.Reset(); public void setOver(Boolean e);/设置游戏是否结束public Birds getBird();/获取小鸟类对象public JButton getStart();/获取开始按钮对象public JLabel getTip();/获取提示标签对象public JLabel getScore();/获取分数标签对象public ImageIcon getIconStart();/获取开始图片对象public int getFrontUp();/获取前一个柱子的高public int getFrontX();/获取前一个柱子的横坐标 public int getRearUp();/获取后一个柱子的高Void paintComponent(Graphics g) public int getRearX();/获取后一个柱子的横坐标 public int getGrade();/获取分数 public void addGrade();/增加分数,每次加1Void paintComponent(Graphics g)画出分数画出变量画出小鸟Int getScore()Birds类对象IamgeIcon变量集合分数增加获取Void addGrade()Birds getBird()GameFrame类public class GameFrame extends JFrame implements Runnable private MyPanel panel;/游戏面板类对象 private boolean start;/游戏是否开始 public GameFrame()/初始化 设置窗口大小为388*538 并添加panel对象到窗口中 start = false; this.setTitle(Flappy Bird!); this.setLayout(null); this.setSize(388, 538); this.setResizable(false); panel = new MyPanel(); panel.setBounds(0, 0, 388, 538); this.add(panel); this.show(); this.setDefaultCloseOperation(EXIT_ON_CLOSE);/窗口关闭时退出程序 public MyPanel getPanel()/获取面对类对象 public boolean isStart()/判断游戏是否开始 public void setStart(boolean set)/设置游戏是否开始 public boolean collision(int bird_y,int pillar_x)/碰撞检测 /* * 在x-柱子坐标在小鸟坐标+45的位置,柱子坐标在小鸟坐标-70的位置进行碰撞检测 * 若小鸟的y坐标上柱子的y 且 小鸟的y坐标下柱子的y 且 小鸟的y坐标城市背景高度 * 则碰撞成功 */ /* * 评分算法:鸟儿的身体完全跨过即得分.即小鸟的坐标大于柱子的坐标+柱子的长度 */public boolean addScore(int pillar_x)public void run();线程方法,在此线程中每隔一定的睡眠时间调用panel的repaint方法/并调碰撞检测方法 如果没有碰撞则调用加分方法addScore方法/游戏结束时 能正确画出小鸟落下的地点 并在点击开始按钮后重新开始控制游戏是否开始Void setStart(Boolean)Boolean getStart()游戏开始Void run()判断游戏结束Boolean collision(int,int)MyPanel.repaint()NOYES游戏结束GameControl类public class GameControl extends MouseAdapter implements Runnable private GameFrame frame;/框架类对象 private Thread threadFrame;/框架类的线程对象 private Thread threadBird;/本类线程对象 public void mouseClicked(MouseEvent e)/鼠标点击时,若是点击源为开始按钮 / 则设置框架类的游戏开始 并隐藏开始按钮与提示标签 public void mousePressed(MouseEvent e)/鼠标按下时并且点击源不是开始按钮 / 则给小鸟一个向上的速度11 public void mouseReleased(MouseEvent e)/鼠标松开 public void mouseMoved(MouseEvent e)/鼠标在组件上移动 public GameControl()/初始化 启动本类线程 super(); frame = new GameFrame(); threadFrame = new Thread(frame); threadBird = new Thread(this); frame.addMouseListener(this);/判定鼠标点击事件 frame.addMouseMotionListener(this);/判定鼠标在窗口内移动 frame.getPanel().getStart().addMouseListener(this); / threadPanel.start(); threadBird.start(); public void run();/本类线程方法 监听游戏的进行状态 /若游戏状态为开始且框架类线程分配了内存但没有运行 则启动框架类线程 /若游戏状态为开始但框架类线程已经被中断,则为其分配内存并启动_Main类public class
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年光伏发电用玻璃纤维材料销售及售后服务合同范本
- 抢救工作制度考试题(含答案)
- 2025年安全生产月知识竞赛试题及答案
- 2025年执勤未佩戴反光背心整改措施
- 2025年偷奸耍滑整改措施
- 汽修专业毕业论文目录
- 数学专业毕业论文数分
- 2025年地铁建设合作协议书
- “以学生为中心”的前置评价教学案设计研究-以《立在地球边上放号》为例
- 计算机专业毕业论文摘要
- 2024年无人机租赁合同
- 国际汉语教学课程大纲
- 《商业银行经营培训》课件
- 个人信息保护专员任命协议(2024年)3篇
- 《第八单元 三词义的辨析和词语的使用》课件部编版高中语文必修上册
- 监控中心改造方案
- 国家级紧急医学救援队伍建设规范
- 《新编剑桥商务英语(初级)》课程教学大纲
- GB 30254-2024高压三相笼型异步电动机能效限定值及能效等级
- 高职计算机专业《Python程序设计》说课课件
- (正式版)CB∕T 4548-2024 船舶行业企业相关方安全管理要求
评论
0/150
提交评论