3贪吃蛇游戏系统设计
3.1程序流程
3.1.1结构构造
MIDlet suite是MIDP应用程序的最小单位,JAM负责将手机内的MIDlet suite以图形化的方式呈现,让用户能够选取欲执行的MIDlet suite,一旦选取了某个MIDlet suite,操作系统就会激活KVM执行里面的MIDlet。MIDlet及相关的支持类组成了MIDP应用程序的实际内容。而每个MIDlet都必须继承javax.microedition.midlet.MIDlet这个抽象类。在MIDP规范中定义了MIDlet的生命周期,以及可以存在的三种状态,包括Paused、Active以及Destroyed,每一个MIDlet在任何时刻只可能处于其中的一个状态。这三种状态的转换关系如图1所示:MIDlet有三个状态,分别是pause、active和destroyed。在启动一个MIDlet的时候,应用管理软件会首先创建一个MIDlet实例并使得他处于pause状态,当startApp()方法被调用的时候MIDlet进入active状态,也就是所说的运行状态。在active状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。值得一提的是destroyApp(boolean unconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet进入destroyed状态。在destroyed状态的MIDlet必须释放了所有的资源,并且保存了数据。如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDletStateChangeException而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。
图1:状态转换关系图
3.1.2系统流程图
本程序采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。
系统流程图,如图2:
图2:系统流程图
3.1.3系统流程说明
上图主要展示游戏的进行控制流程图,这里说明一下流程。首先当游戏运行时将对玩家进行按键进行检测,同时对方向进行响应。这里的响应主要是在屏幕上显示蛇的移动方向,同时还会检测当前蛇的状态。如果蛇头碰到蛇尾或者蛇头碰到墙壁都会导致游戏结束。当蛇头碰到蛋的时候,会进行家分,同时在屏幕上显示出来。
同时这里还有其他按键检测,主要是对菜单按键检测。菜单按键检测包括退出和系统设置。当游戏中检测到退出按键时,游戏结束。当游戏中检测到菜单按键时进行菜单按键事件处理,主要是设置游戏暂停,等级和音效开关。
3.2数据结构设计
节:一条蛇可以看成有许多正方形的“小格子”拼凑成,我把它称作节。节是蛇身上最小的单位。
段:当许多节连成一条直线,我称它为段。贪吃蛇只有一段,如果它拐弯就变成两段。
链表:用来保存每一段的状态,链表的元素单位是段。且链表的最后一个元素表示蛇的头部段。
坐标系:MIDP中的坐标以左上角那点为(0,0),向右则x递增,向下则y递增。
这里讲解数据结构类中主要属性,其他方法将在后面讲解。
这里用一个SnakeLink类来表示一个蛇身体节点对象:
public class SnakeLink {
private int x, y;//坐标
private int len;//长度
private byte dir;//方向
private SnakeLink() {
}
……
}
这里用SnakePit类来表示一个蛇对象的基本游戏属性:
public class SnakePit extends Canvas implements Runnable {
//蛇的食物
private SnakeFood myFood;
//当前蛇对象
private Snake mySnake;
//结束标志
private boolean gameOver = false;
//暂停标志
private boolean gamePaused = false;
//重来标志
private boolean gameRestart = false;
//重画标志
private boolean forceRedraw = true;
//退出游戏标志
 
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/7/7
免费手机吞吃蛇游戏的设计与开发(三)由免费论文网(www.jaoyuw.com)会员上传。