快速业务通道

JBuilder 2005开发Applet游戏全接触 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
hread同样的原因,也作为TypeTrainApplet成员内部类来定义,其代码如下所示:

代码清单 6 GenerateDropThread 产生器线程

1. … 2. public class TypeTrainApplet extends JApplet { 3.  … 4.  private class GenerateDropThread extends Thread { 5.   Random random = new Random(); //随机数 6.   public void run() { 7.    try { 8.     while (statusCode != 0) { //产生下落线程 9.      synchronized (canvas) { 10.       while (statusCode == 2) { 11.        canvas.wait(); 12.       } 13.      } 14.      DropCharThread dropCharThread = new DropCharThread( 15.       getRandomChar(), 16.       random.nextInt(columnCount) + 1); 17.       dropCharThread.start(); 18.       Thread.sleep(generateInterval); 19.      } 20.     } catch (InterruptedException ex) { 21.     } 22.    } 23. 24. /** 25. * <b>功能说明:</b><br> 26. * 返回一个随机字符 27. * @return 随机字符 28. */ 29.    private char getRandomChar() { 30.     int temp = 97 + random.nextInt(26); 31.     return (char) temp; 32.    } 33.   } … 34.  }

这个线程很简单:定期创建并启动一个DropCharThread字母下落线程。需要特别说明的是如何为字母下落线程提供一个随机字母和一个随机栏序号。我们通过一个随机对象java.util.Random的nextInt(int range)方法产生一个0~range-1的整数作为随机栏序号,在第29~32行定义了一个随机产生字母的getRandomChar()方法,因为小写字母a~z的ASCII代码是97~112,第30行即得到一个小写字母所对应的ASCII代码,通过第31行强制类型转换就可获取一个随机的小写字母字符。

在每次循环时,都判断游戏是否被暂停,如果暂停,则线程进入睡眠,暂停产生字母下落线程,如第8~13行所示。为了统一游戏总体的控制,所以这个线程也通过canvas对象进行同步,在其他地方调用canvas.notifyAll()方法后,暂停的线程就苏醒出来,继续工作。 

在第18行,线程睡眠一小段时间,通过TypeTrainApplet的generateInterval成员变量就可以控制字母下落线程下落的速度,这个参数可以直接通过网页<param name = "generateInterval" value = "500">指定其值。

4、响应用户按键事件

所谓击中下落的字母,即是用户按下键盘中的一个键所对应的字母和某个字母下落线程的字母是一致的,对应的字母下落线程结束并将击中数递增1。

要让游戏自动监测到用户所按的按键,就需要Applet响应键盘按键事件,下面我们来为Applet生成按键事件的处理方法。

打开TypeTrainApplet.java,切换到Design视图页中,在结构窗格的组件树中选择this(BorderLayout)节点,切换属性查看器到Event标签页中,双击keyPressed项,如下图所示:

JBuilder 2005开发Applet游戏全接触 - 编程入门网

图 12 为Applet生成响应按键的事件处理方法

此时,JBuilder为Applet生成了一个按键事件******,并切换到Source视图页并将光标定位到事件处理方法中,在方法中键入如下粗体的代码。

1. … 2. public class TypeTrainApplet extends JApplet { 3.  … 4.  /**获取用户点击按键所对应的字符*/ 5.  public void this_keyPressed(KeyEvent e) { 6.   if (!e.isActionKey()) { 7.    pressKeyChar = e.getKeyChar(); 8.   } 9.  } 10.  … 11. }

第6行判断按键是否字符的按键,如果是在第7行中获取按键所对应的字符。

JBuilder 2005开发Applet游戏全接触(10)

时间:2010-04-27 天极

控制游戏

至此,我

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号