推箱子游戏设计报告
数据结构:
struct Per
{
int nPerX;
int nPerY;
char chFlag;
struct Per *next;
}
//记录虫虫每一步的状态,即当前格子的横纵坐标,图形。
本程序用10*10的二维数组存放地图。
用逆序链表记录路径来做为悔棋之用,可以做无限次的悔棋。
虫虫每走一步最多影响三格地图的变化,因此每一步用三个结点记录状态,当前格即虫虫所在(用指针per),按当前行走方向的下两格状态。
主要功能模块:
/*函数IsPass功能:判断是否过关*/
/*函数ReadMap根据关数加载地图*/
/*选关对话框窗口过程*/
/*函数Move1功能:左移或右移*/
/*函数Move2功能:上移或下移*/
/*函数IsWall功能:遇到墙壁不做任何操作返回*/
/*函数IsBox功能:是否遇到箱子*/
/*函数IsMovePer功能:遇到箱位或空地直接移动虫虫*/
/*函数IsInBox功能:遇到有箱子的箱位*/
/*函数Path功能:将虫虫走过的路径建立为链表(包含下两个未走的状态)*/
/*函数Undo功能:悔棋一步*/