Java游戏编程原理与实践教程第19章 打猎游戏 .pptVIP

  • 8
  • 0
  • 约4.12千字
  • 约 11页
  • 2019-07-17 发布于辽宁
  • 举报

Java游戏编程原理与实践教程第19章 打猎游戏 .ppt

第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 { // 线程随机

文档评论(0)

1亿VIP精品文档

相关文档