- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
苏 州 市 职 业 大 学
课程设计说明书
名称 迷宫游戏
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(
文档评论(0)