c语言课程设计-迷宫游戏

c语言课程设计-迷宫游戏

ID:8259354

大小:70.00 KB

页数:15页

时间:2018-03-14

c语言课程设计-迷宫游戏_第1页
c语言课程设计-迷宫游戏_第2页
c语言课程设计-迷宫游戏_第3页
c语言课程设计-迷宫游戏_第4页
c语言课程设计-迷宫游戏_第5页
资源描述:

《c语言课程设计-迷宫游戏》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机技术基础课程设计C语言设计报告题目:完整的二维迷宫游戏学院:工商管理学院专业:信息系统与信息管理班级:050507姓名:孙月指导教师:张首伟设计日期:2004年12月10日题目:完整的二维迷宫游戏一、选题背景:问题的提出:我们在玩迷宫游戏的时候,常常在过了一关之后就结束了,这里设计的迷宫游戏足够多,难以程度也不尽相同,可以过瘾的玩。模仿的有那么一点意思,还请多多指教!二、设计思想: (1).问题描述用一个m行n列的二维数组来表示迷宫。数组中每个元素的取值为0或1,其中值0表示通路,值1表示阻塞,入口在左上方

2、(1,1)处,出口在右下方(m,n)处,如图所示。要求求出从迷宫入口到出口有无通路,若有通路则指出其中一条通路的路径,即输出找到通路的迷宫数组,其中通路上的“0”用另一数字(例如8)替换,同时打印出所走通路径上每一步的位置坐标及下一步的方向。(2).求解方法说明:1.为使问题一般化,假设以二维数组maze(1:m,1:n)表示迷宫,并设maze(i,j)表示任一位置。2.对每个位置maze(i,j),可移动的八个方向从正东起顺时针方向顺序为:E,SE,S,SW,W,NW,N,NE。再用一个二维数组move表示这八

3、个方向上坐标的增量,如下表所示,move(v,1)表示第v个方向上i的增量,move(v,2)表示第v个方向上j的增量。三、程序流程图四、程序清单:一、二、#include#include#include#include#include#defineN20/*迷宫的大小,可改变*/int  oldmap[N][N];/*递归用的数组,用全局变量节约时间*/int  yes=0;/*yes是判断是否找到路的标志,1找到,0

4、没找到*/int  way[100][2],wayn=0;/*way数组是显示路线用的,wayn是统计走了几个格子*/voidInit(void);/*图形初始化*/voidClose(void);/*图形关闭*/voidDrawPeople(int*x,int*y,intn);/*画人工探索物图*/voidPeopleFind(int(*x)[N]);/*人工探索*/voidWayCopy(int(*x)[N],int(*y)[N]);/*为了8个方向的递归,把旧迷宫图拷贝给新数组*/int  FindWay(

5、int(*x)[N],inti,intj);/*自动探索函数*/voidMapRand(int(*x)[N]);/*随机生成迷宫函数*/voidPrMap(int(*x)[N]);/*输出迷宫图函数*/voidResult(void);/*输出结果处理*/voidFind(void);/*成功处理*/voidNotFind(void);/*失败处理*/voidmain(void)/*主函数*/{  intmap[N][N];/*迷宫数组*/  charch;  clrscr();  printf("Pleas

6、eselecthand(1)elseauto");/*选择探索方式*/  scanf("%c",&ch);  Init();  /*初始化*/  MapRand(map);/*生成迷宫*/  PrMap(map);/*显示迷宫图*/  if(ch=='1')    PeopleFind(map);/*人工探索*/  else    FindWay(map,1,1);/*系统自动从下标1,1的地方开始探索*/  Result();/*输出结果*/  Close();}voidInit(void)/*图形初始化*

7、/{  intgd=DETECT,gm;  initgraph(&gd,&gm,"c:\tc");}voidDrawPeople(int*x,int*y,intn)/*画人工控制图*/{/*如果将以下两句注释掉,则显示人工走过的路径,*/  setfillstyle(SOLID_FILL,WHITE);  /*设置白色实体填充样式*/  bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6);/*恢复原通路*/  switch(n)/*判断x,y的变

8、化,8个方向的变化*/  {    case1:(*x)--;break;/*上*/    case2:(*x)--;(*y)++;break;/*右上*/    case3:(*y)++;break;  /*右*/    case4:(*x)++;(*y)++;break;/*右下*/    case5:(*x)++;break;  /*下*/    case6:(*x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。