课程设计说明书--迷宫游戏.doc
文本预览下载声明
苏 州 市 职 业 大 学
课程设计说明书
名称 迷宫游戏
2011年 1月 10日至 2011年 1月 16日共一周
院 系 计算机工程系
班 级 10软件技术(外包)1
姓 名 颜玲玲
系 主 任 李 金 祥
教研室主任 叶 良
指导教师 李爱军 殷凡
目 录
目 录 1
一、 题目说明 2
1.1程序开发背景 2
二、总体设计 2
2.1.系统开发平台 2
2.2.系统流程图 2
三、详细说明 3
3.1 系统实施 3
四、遇到的问题和解决方法 9
五、课程设计总结 10
六、参考文献 10
附录(源程序代码) 10
题目说明
1.1程序开发背景
迷宫是我们从小就开始有所接触的一种游戏,许多人都喜欢玩这个游戏。我们在C语言中可以用0、1数字组成的二维数组来表示。1代表迷宫的墙壁,0代表通过迷宫的通道,用右手搭墙法,把手放在右边的墙上开始前进,保持手不离开墙壁,身体随着通道拐弯或者旋转,最终就可以达到目的。迷宫是我们平时都很喜欢玩的一种游戏,在休闲的时候可以通过玩这种小游戏来适当的放松一下自己的心情。
二、总体设计
2.1.系统开发平台:
系统使用VC 6.0中文版设计
2.2.系统流程图:
图1 系统流程图
三、详细说明
1.在程序的前面用二维数组来表示迷宫的布局;
2.采取动态链表的方式来顺次记载每个步骤或者姿势;
3.在进入通道后,要随机确定站立的方位,方位按0~7等8个方位进行编码;
4.在行走的过程中,要判断是否走出了迷宫,并记录下每个动作。走出边界就退出。如果回到了原来的地方并且方位也回到了行走之初的情形,则意味着将所有通道都走了一遍,无法找到出口。
3.1 系统实施
1. void main()
{
int mz[12][12]={
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,1,0,0,0,0,0,0,1},
{0,0,1,0,1,0,1,1,1,1,0,1},
{1,1,1,0,1,0,0,0,0,1,0,1},
{1,0,0,0,0,1,1,1,0,1,0,0},
{1,1,1,1,0,1,0,1,0,1,0,1},
{1,0,0,1,0,1,0,1,0,1,0,1},
{1,1,0,1,0,1,0,1,0,1,0,1},
{1,0,0,0,0,0,0,0,0,1,0,1},
{1,1,1,1,1,1,0,1,1,1,0,1},
{1,0,0,0,0,0,0,1,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1}
}
这是用二维数组来表示迷宫的布局;
2./*进入迷宫*/
rnd=rand();
if(rnd0) rnd=0;
x0=rnd%m;
rnd=rand();
if(rnd0) rnd=0;
y0=rnd%n;
这段程序是为了随机确定起始位置;
3./*确定以当前位置为中心到四周的最大距离*/
rmax=x0;
if(y0x0) rmax=y0;
if(m-1-x0rmax) rmax=m-1-x0;
if(n-1-y0rmax) rmax=n-1-y0;
如果在进入通道时该位置不是通道,那么就以此点为中心并以半径逐一增大的方式向四周辐射扫描,直至进入通道或者找遍所有位置没有通道为止。这样做既保证了随机性,又避免了由直接位置可能永远也无法进入通道的情况出现;
4.typedef struct _POSE
{
int i,j;/*身体位置*/
int dir;/*方向或者出口*/
struct _POSE *next;
}POSE;
这段函数表示的是一个姿势或者状态;
5./*找第一个通道*/
noexit=1;
if(mz[y0*m+x0]!=0)
{
for(r=1;r=rmax;r++)
{
x=x0;
y=y0;
dir=0;
if(adjacent(mz,m,n,x,y,r,dir,0)==1)
{
noexit=0;
x0=x;
y0=y;
break;
}
}
}
else
{
noexit=0;
}
if(noexit==1)
{
printf(
显示全部