1、w(上),s(下),a(左),d(右)控制迷宫的走向 y表示确定 n表示否定 二、 概要设计 1. 设计思路:实现走迷宫game()对迷宫地图进行修改实现自动搜路change()Mathpath()对搜寻的路径进行输对修改的地图数组进行保存出edit()print()对修改的地图进行保存savemap()2.数据结构设计:采用的是栈来存储数据,进栈实际是在栈中插入三元组,出栈则只数组的个数进行操作 抽象数据类型线性表的定义如下:ADT SqStack 数据对象:D=a| a ?SElemType,i=1,2,3,n,n?0 ii数据关系:R1=| a,a ?D,i=1,2,3,,n i-1ii
2、-1i基本操作:SqStack *InitStack() 操作结果:创建一个空栈 void Push(SqStack *S,SElemType data) 初始条件:栈S已存在 插入一个元素,并且使数据个数加一(top+) void Pop(SqStack *S) 栈S已存在。栈中元素个数减一(top-) 2. 软件结构设计:game()模块 函数原型:void game(int map1hw)/游戏函数 #define killtime 15 clock_t start, finish;double duration;int x=1,y=1,m=0,n=0,M,N,MAP100100;/x-
3、colom y-row char cCtrl=0;cout 游戏规则:endl w向上,s向下,a向左,d向右,q退出 按任意键开始,方向键开始计时endl;for(M=0;M=h-1;M+) for(N=0;N=w-1;N+) MAPMN=map1MN;start = clock();/开始计时 while(cCtrl=getch()!=q) switch(cCtrl) case w:/向上 cout0&!MAPy-1x) y-;break;s/下 if(!MAPy+1x) y+;a/左 if(xMAPyx-1) x-;d/右 MAPyx+1) x+;system(cls);/刷屏 for(
4、m=0;mh;m+) for(n=0;nw;n+) if(m=y&n=x) color 6/现实老鼠所在位置 else if(MAPmn) ?/打印墙壁 if(m=9&n=8) /显示粮仓 /显示可行路径 if(x=8&y=9) finish = clock();/停止计时 duration = (double)(finish - start) / CLOCKS_PER_SEC;/compute the time 你耗费的时间是:durationkilltime)/lose 你输了,完蛋了,小老鼠要饿死了 囧rz!else/win ?(o)? 小老鼠总算找到粮仓了,谢谢啊 这是你赢得的金币,小
5、老鼠奉上: for(int i=0;itop;输出每一个坐标位置和探索的方向 maps-datai.seat .rs-datai.seat.c=2;/把坐标位置重新标记 count+;/路径记录加一 输出字符模式的地图;初始化地图(赋值); ) /向上 if(yMAPy-1x)y-;/下 if(!MAPy+1x)y+;/左 if(xMAPyx-1)x-;/右 if(!MAPyx+1)x+;打印出老鼠,墙壁,粮仓;finish = clock();胜利和失败的处理;void savemap(int maphw)/保存地图 以追加的方式打开一个文件;将地图以字符形式写入文件;将地图以数组形式写入文件;void change(int maphw)/墙变路,路变墙 先以字符形式显示地图;输入你想改变的坐标;路变墙,墙变路;显示改变后的地图 选择保存与否;继续游戏;void edit(int game) int a100000;FILE *fp;fp=fopen(ok.txtr/打开地图数组文件 int t=0;while(fscanf(fp
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1