- 8
- 0
- 约4.12千字
- 约 11页
- 2019-07-17 发布于辽宁
- 举报
第19章 打猎游戏 打猎游戏程序界面底部会有野猪随机出现,并以不固定的速度移动;上方有小鸟以反方向飞过。当用鼠标在它们身上进行单击操作时,会打中该动物,动物消失,在界面左上角得到相应分数,但是如果动物跑出界面,存戏就会扣除一定的分数。 另外,界面右上角会显示当前剩余子弹数量,如无子弹,需要等待系统装载子弹。运行程序,效果如图19-1所示。 游戏运行界面 19.2 设计思想 使用一个带背景(background.jpg)的面板作为森林,其上显示小鸟、野猪对象。小鸟、野猪对象分别使用继承JLabel类的BirdLabel标签类、继承JLabel类的PigLabel标签类实现。 创建一个继承JFrame类的主窗体类MainFrame,使用两个线程分别生成小鸟和野猪角色对象,并且能响应鼠标事件。 19.3 关键技术 19.3.1 控制动物组件的移动速度 本程序的难点在于控制动物组件的移动速度。如果每个动物移动的速度相同,就会使程序运行效果枯燥乏味,没有游戏难度也就没有进行下去的意义,所以要在线程中控制每个组件的移动速度。在线程循环中,可通过随机数来确定新创建的动物组件移动线程的休眠时间,这样就可以为每个动物组件设置小同的移动速度。 19.3 关键技术 例如小鸟组件代码: public class BirdLabel extends JLabel implements Runnable { // 随机生成线程的休眠时间,即控制小鸟移动速度 private int sleepTime = (int) (Math.random() * 300) + 5; private int y = 100; private Thread thread;// 将线程作为成员变量 public void run() { parent = null; int width = 0; try { while (width = 0 || parent == null) { if (parent == null){ parent = getParent();// 获取父容器 } else { width = parent.getWidth();// 获取父容器的宽度 } Thread.sleep(10); } for (int i = width; i 0 parent != null; i -= 8) { setLocation(i, y);// 从右向左移动本组件位置 Thread.sleep(sleepTime);// 休眠片刻 } } catch (InterruptedException e) { e.printStackTrace(); } } 在run()实现不断从右向左移动小鸟组件位置,每次移动8个像素。但是每个小鸟组件休眠时间不一致,所以产生移动的速度不同效果。 野猪角色的移动速度控制原理与小鸟同理。 19.3 关键技术 19.3.2 随机间歇产生动物组件 在MainFrame窗体类的内部线程类PigThread中,调用了Math类的random( )方法随机确定线程休眠的时间,这样可以不定时产生野猪角色。窗体类MainFrame的内部线程类PigThread(生成野猪角色的线程)的代码如下: /** * 生成野猪角色的线程 */ class PigThread extends Thread { @Override public void run() { while (true) { // 创建代表野猪的标签组件 PigLabel pig = new PigLabel(); pig.setSize(120, 80);// 设置组件初始大小 backgroundPanel.add(pig);// 添加组件到背景面板 try { // 线程随机
您可能关注的文档
最近下载
- 《工业控制系统简介》课件.ppt VIP
- 村委员竞选演讲稿汇总7篇.docx VIP
- 客户服务管理.ppt VIP
- 给排水国标图集-04S520:埋地塑料排水管道施工.pdf VIP
- 小学生主题班会通用版《珍爱生命,远离毒品》课件(共24张PPT+视频).pptx VIP
- 聚集性事件、药品群体不良事件调查处置标准操作规程.docx VIP
- 团圆绘本教学省公开课一等奖全国示范课微课金奖PPT课件.pptx VIP
- 2026年度江苏旅游职业学院单招《数学》综合提升测试卷及答案详解(典优).docx VIP
- 2025至2030中国烟草包装行业发展研究与产业战略规划分析评估报告.docx VIP
- 青岛天信BPJ-500-1140矿用隔爆兼本质安全变频器说明书.pdf VIP
原创力文档

文档评论(0)