文档详情

课程设计说明书--迷宫游戏.doc

发布:2018-05-14约4.76千字共11页下载文档
文本预览下载声明
苏 州 市 职 业 大 学 课程设计说明书 名称 迷宫游戏 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(
显示全部
相似文档