课程设计说明书 NO.5
游戏中用一个 MapFactory 类操作地图,其中用三维矩阵记录游戏地图信息。三维
矩阵便于管理,如果要加入新关卡,只需要在三维矩阵中加入二维矩阵就可以了,同
时,可以加入不同大小的地图。
a、 地图矩阵信息
// 地图坐标状态描述
1、private %nal int Black = -2; // 外界
2、private %nal int Wall = -1; // 墙
3、private %nal int Ground = 0; // 地面
4、private %nal int Boxes = 1; // 箱子
5、private %nal int Boxes_position = 2; // 箱子位置
6、private %nal int Boxes_in_place = 3; // 箱子移动到合适位置
7、矩阵中标有 数字 4 的位置表示 该位置是游戏主角的初始位置
B、游戏过程设计
游戏中过程中,最为主要地方在于对地图矩阵,以及主角状态信息(包括位置、行
走状态等)的维护,主角每行走一步,就更新一次地图信息和主角状态信息。另外一
个比较重要的地方是游戏状态的保存方面。在该游戏中,使用栈结构保存主角每次行
走的状态信息(包括游戏矩阵和主角位置等)。为保存主角信息,特别开设了一个
undoState 类,该类主要作用就是保存玩家每一步的游戏状态,便于撤销。
在游戏画面处理和逻辑判断方面,都放在了 GameSurfaceView 类里面。因为考
虑到该游戏的逻辑判断和画面绘制较为简单,不需要长时间的运算,所以就把很多功
能都放在了主线程里。因为采取的是单线程,所以,重画操作都是 事件驱动的。
1、地图载入、绘制
根据玩家选择的关卡,载入地图矩阵。在载入地图的过程中,根据屏幕大小,对图片
进 行 了 缩 放 ( 使 用 矩 阵 缩 放 ) 。 这 些 功 能 主 要 在 setMapAndactorPosition();
initPicture();函数中实现
2、地图切换
玩家每过一关,就载入一张新地图,地图信息都保存在 private int[][] map 对象里
面,然后重新绘制地图。该功能主要在 nextPass() 函数实现。
3、重玩
如果玩家选择重玩,只要重新把目前关卡的地图载入就可以了,同时删除原有的信
沈 阳 大 学