java手机游戏设计源代码 第4页


java手机游戏设计
 程序运行时应该对玩家飞机是否飞出屏幕的范围进行检测,如果飞出屏幕,就应该重新设定玩家飞机的位置。
    玩家飞机被击中后,为了平衡游戏的可玩性,玩家飞机将有短暂时间无敌,即不进行碰撞检测,同时在屏幕右上角显示无敌时间。
    根据游戏设定,敌人飞机。不能与玩家飞机重合,则他每走一步都需要检测一下是否与玩家飞机碰撞。Sprite类中提供了collidesWith函数,用于判断是否与某个Sprite、TiledLayer、Image的对象有图象上的重合(即游戏中的碰撞)。同理,还需要检测玩家子弹与敌机、敌机与玩家子弹是否碰撞。如果发生碰撞,将相关精灵图片替换为爆炸图片。
敌人飞机需要具有一定的智能性,以便对玩家攻击,使游戏具有一定的可玩性。敌人可以在适当时候转向或者开炮火,同时,程序应该检测敌机是否飞出了界外。
在普通敌机中,有一组敌机的其中一架具有跟踪功能,其原理为:当其进入屏幕后,根据玩家飞机的X、Y坐标不断调整自己的X、Y坐标,已达成跟踪的效果。由于线程的关系,敌机器的改变方向有时并不是实时的,这就可以使玩家有躲开撞击的可能,增强了游戏的可玩性。
在游戏进行中出现的大型飞机,由于其不可能立即被击落,所以应该设置其的运行方法,理论上讲还是根据玩家飞机的坐标,但是,在此设置一个标志位,使得敌人在取的玩家位置后即开始玩家方向运动,这期间,将不执行取得玩家飞机位置重设飞行方向的步骤。这样做,即防止了大飞机变成跟踪飞机,又使得大飞机的运行具有不确定性。
在关尾出现的BOSS,其在屏幕上方左右移动并发射子弹。实际上,此时BOSS应该通过玩家在游戏运行中的习惯性的运行方向,使用遗传算法,来动态判断玩家下一步的运行方向,并且指挥普通飞机出现在预测的位置上。可惜由于时间关系没有实现。
3.9 子弹的运行和控制
    玩家的子弹是个精灵数组,有9个元素,表示玩家一次最多可以发射3组9发子弹,对于一个完整的游戏来讲,应该根据关卡的不同而给予玩家不同的飞机,飞机性能的差别在于子弹的射程不同。由于本游戏仅有一关,所以子弹速度设定的差别没有体现出来。
    当玩家一次发射了3组子弹,而这3组子弹并没有消失时,玩家将无法发射子弹。
    使用每组子弹的第一发作为与敌人进行碰撞检测的精灵,同时相关的标志位也设在第一发子弹中。如果玩家子弹与敌机相撞,则敌机消失时,子弹精灵的图片替换为爆炸图片,直到第二次发射该组子弹时,才将图片替换为子弹图片。
3.10 内存的优化
手机内存空间小,所以在程序设计时应该注意以下几点,以尽量减少内存的使用:
    (1)尽量缩短命名的长度。在应用程序内,对于所建立的类、接口、方法及变量名而言,都需要赋予一个识别的名称,所命名的名称每多一个字符就会在类文件内多产生一个字节,对于一个较复杂的应用程序而言就会增加为数不小的数据量。所有这些可以借助混淆器来帮助实现
    (2)所有代码写为一个类。
    (3)只使用一个线程。
    (4)尽量不使用静态变量。
    (5)将PNG图片合并成一张,减少图形数据的大小。
将PNG格式的小分辨率图象合并在一张大的高分辨率图象中,由于减少了头文件的大小,将比合并前的总大小减少许多。
3.11 内存检测器
Wireless Tool Kit提供了许多在运行时监视运行状态的工具。 包括内存状况的检测(手机上的内存空间十分有限,必须时刻关注机载内存是否大于程序所能使用到的最大可能的内存空间),网络状况的检测,运行函数的跟踪等。 内存检测器是内存跟踪测试随时间变化的调试器。其中,允许强制垃圾回收(Garbage Collection)。由于Java语言中,不像许多其他的如C++语言,不需要指定回收函数中特定不使用的资源,资源回收机制将自动清空无效变量占用的空间。在程序运行中也可以调用System类的gc()函数手动收回废弃的内存。
3.12 关于混淆器
Java 语言并没有完全编译成二进制可执行文件,编译出的.class文件是一种介于源程序和二进制之间的一中基于半解释的字节码,需要虚拟机来执行。它包括了所有的信息。然而这样会导致.class很容易被反编译为源代码,从而不能保护作者的知识成果。目前流行的如decode,JAD等反编译工具可以以很快的速度生成源文件。如果不加以施行有效的措施,将造成严重的后果。
由此引入混淆器的概念。混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,如果缺乏相应的函数名指示和程序注释,即使被反编译,也将难以阅读。
    混淆器的作用不仅仅是保护代码,它也有精简编译后程序大小的作用。由于以上介绍的减少变量、函数的命名长度的关系,编译后也会从.class文件中减少这些冗余的信息。混淆后,体积大约能减少25%,这对当前费用较贵的无线网络传输是有一定意义的。
3.13 本章小结
第三章中介绍了程序的流程、相关技术的思想及其在本程序中的应用。对游戏基本算法等做了详细叙述。具体算法的代码实现和详细流程将在下章介绍。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有