计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

免费手机吞吃蛇游戏的设计与开发(一)毕(6)

2013-06-27 01:18
导读:;// 显示画板 Display.getDisplay(this).setCurrent(theGame); try { // 开始游戏线程 Thread myThread = new Thread(theGame); myThread.start(); } catch (Error e) { destroyApp(false); notifyDestroy
;// 显示画板
 Display.getDisplay(this).setCurrent(theGame);
 try {
 // 开始游戏线程
 Thread myThread = new Thread(theGame);
 myThread.start();
 } catch (Error e) {
 destroyApp(false);
 notifyDestroyed(); }
 public void commandAction(Command c, Displayable d)
 接受并处理用户输入事件
 // 重新开始
 if (c == restartCmd) {
 theGame.restart();
 };
 // 改变难度等级
 if (c == levelCmd) {
 Item[] levelItem = {
 new Gauge("Level", true, 9, theGame.getLevel())
 };
 Form f = new Form("Change Level", levelItem);
 f.addCommand(OKCmd);
 f.addCommand(cancelCmd);
 f.setCommandListener(this);
 Display.getDisplay(this).setCurrent(f);
 };
 // 离开游戏
 if (c == exitCmd) {
 destroyApp(false);
 notifyDestroyed();
 };
 // 开始游戏
 if (c == startCmd) {
 theGame.removeCommand(startCmd);
 theGame.addCommand(restartCmd);
 theGame.restart();
 };
 // 确定
 if (c == OKCmd) {
 Form f = (Form)d;
 Gauge g = (Gauge)f.get(0);
 theGame.setLevel(g.getValue());
 Display.getDisplay(this).setCurrent(theGame);
 };
 // 取消
 if (c == cancelCmd) {
 Display.getDisplay(this).setCurrent(theGame);
 };
5系统测试
 5.1测试方法
 (1)启动模拟器运行贪吃蛇游戏对各个按键进行检测是否有效。
 (2)观察对方向键按下屏幕上蛇的移动变化是否正确。
 (3)观察系统设置菜单在相应按键按下后是否正确。
 (4)观察在蛇吃到食物,也就是和食物接触时是否增加长度。 (转载自http://zw.NSEAC.com科教作文网)
 (5)观察当蛇移动过程中碰到墙壁或尾巴是否游戏结束。
 (6)观察当蛇吃到食物游戏分数是否增加,当游戏难度调节蛇移动速度是否变化以及当游戏技术是否记录最高分。
 5.2 测试结果
 本游戏只对程序中定义的按键进行响应
 (1)本游戏只对程序中所有定义的按键进行一一响应。比如:2,4,6,8。这4个键,分别控制蛇移动的上下左右四个方向。同时,4,6这两个键也可以用来选择菜单,回车键为确定的作用;
 (2)当按键为方向键时,蛇均会按照正确方向移动。除了这几个键,其他键,均不起作用;
 (3)当按键为系统菜单按键时,可以正确执行响应方法进行系统设置;
 (4)当蛇吃到食物身体就会变长;
 (5)当蛇在移动过程中碰到墙壁或尾部,屏幕上就会出现游戏结束这几个字;
 (6)当蛇吃到食物分数会增加;游戏默认等级设置的为5级,蛇每吃一个食物分数就增加5分,如果设置游戏等级为9,也就是最高等级,那么蛇没吃一个食物,增加的分数就是9分;
 (7)当难度改变后,首先改变的就是蛇的移动速度,当然同时分数也会增加。
 (8)当游戏运行一段时间后,会出现过关音效,每过一关,游戏等级就增加一级。
 
 
 

 图4 系统测试图
 从图中我们可以看出,本游戏在电脑上的手机模拟器上运行,电脑模拟手机有529K内存的最大内存。图中红线部分就是最大内存位置。当游戏开始运行时,系统会初始化游戏运行环境,电脑上的手机模拟器和真实手机上的界面一致,这个时候会加载一些类,同时创建一些对象,这个过程是一步一步进行,从图中的斜边处可以看出来。然后当游戏运行加载完成后,就进入一个平稳状态。这个过程就是加载游戏打包成的JAR文件的相应过程的内存分配情况。紧接着垃圾回收机制会释放初始化资源,这个过程比较快,这个过程发生在游戏运行起来时,该过程能从图中比较陡的这条竖线看出来。同时垃圾回收机制清理内存后,进入游戏真正需要的内存资源状态,大概在100K左右,当射吃掉一个食物的时候会增加一个食物对象到链表里面,体现在游戏中就是增加蛇身长度,这时就会开放内存空间,同时从上图可以看出,很明显的一个梯度的增加,这个梯度的增加频率跟蛇吃到食物的速度一致。从内存变化图可以看出,该游戏消耗资源比较少,性能上还是比较高效。Wireless Tool Kit提供了许多在运行时监视运行状态的工具。 包括内存状况的检测(手机上的内存空间十分有限,必须时刻关注机载内存是否大于程序所能使用到的最大可能的内存空间),网络状况的检测,运行函数的跟踪等。内存检测器是内存跟踪测试随时间变化的调试器。其中,允许强制垃圾回收(Garbage Collection)。由于在Java语言中,不像许多其他的如C++语言,不需要指定回收函数中待定不使用的资源,资源回收机制将自动清空无效变量占用的空间。在程序运行中也可以调用System类的gc()函数手动收回废弃的内存。 (科教范文网http://fw.nseac.com)
 手机内存空间小,所以在程序设计时应该注意以下几点,以尽量减少内存的使用:
 (1)尽量缩短命名的长度。在应用程序内,对于所建立的类、接口、方法及变量名而言,都需要赋予一个识别的名称,所命名的名称每多一个字符就会在类文件内多产生一个字节,对于一个较复杂的应用程序而言就会增加为数不小的数据量。所有这些可以借助混淆器来帮助实现。
 (2)把所有的程序代码都写为一个类。
 (3)在整个开发过程中只使用一个线程。
 (4)尽量不使用静态变量。
 5.3 测试结论
 以上的测试案例是单独进行测试的,还需
上一篇:免费基于细胞自动机的生命活力模拟的实现(一 下一篇:没有了