我们已经讨论了改变图像以适应设备的必要性,但是Sprite可能也需要改变。如果Sprite类足够智能,能检测到它们自身的尺寸改变,那么一切将工作得很好。然而,它们可能会以不同的方式移动,这就需要改变移动的方法。Sprite间的碰撞检测也可能改变。例如,一个更小的图像可能需要一个更小的碰撞检测区。在一些情况下,使用整个图像来进行碰撞检测的处理太耗费时间,因此我们要使用defineCollisionRectangle()方法来定义一个更小的区域。Sprite大小的改变可能意味着其碰撞检测区也要随之改变。
屏幕尺寸的改变可能需要更少的Sprite的副本。可能会有更小的空间来显示敌方角色,或者那些应该出现在屏幕上的Sprite落在了屏幕外。例如,在一个典型的Space Invaders游戏中,较小的屏幕尺寸可能意味着较少的攻击玩家角色的敌人。你希望在更大的屏幕上得到更多的攻击和子弹吗?你认为在不增加游戏难度的情况下,MIDlet应该在初始化时计算出多少次攻击是合适的吗?应该隐藏更少的或更小的障碍吗?这些值可能被硬编码在Sprite类的成员变量中。考虑创建一个资源包来提供这些值,或者将它们添加到JAD文件,使MIDlet能够在启动时查询到它们,这是不是更明智?
尽可能地使用游戏动作。它提供了一个通用的游戏动作的映射,比如开火、上、下、左、右等,可以很容易地在键盘上实现,如对应2、8、4和6。一些键盘有不同的布局,比如MIDP 1.0手机Siemens SX-1,可能以不同的方式映射这些动作。甚至像Sony Ericsson P900这样主要使用基于操纵杆的设备,其操纵杆也能被用于游戏动作的向上和向下。游戏设计可能需要简化,或者可以使用可卷动的Choice列表作为游戏菜单让用户选择。