版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE1数据结构与算法课程设计说明书
学院、系:软件学院专业软件工程设计题目:走迷宫游戏需求分析设计内容:程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。设计要求:1)
老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2)
迷宫的墙足够结实,老鼠不能穿墙而过;3)
正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;4)
添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;5)
找出走出迷宫的所有路径,以及最短路径。利用序列化功能实现迷宫地图文件的存盘和读出等功能2系统设计设定栈的抽象数据类型定义为;ADT
stack{数据对象:D={ai|ai∈charset,i=1,2,……,n,n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2……,n}基本操作:InitStack(&S)//操作结果:构造一个空栈S。DestroyStack(&S)//初始条件:栈S已存在。//操作结果:销毁栈S。ClearStack(&S)
/初始条件:栈S已存在。
//操作结果:将S清为空栈。StackLength(&S)
//初始条件:栈S已存在。
//操作结果:返回栈S的长度。GetTop(S,&e)
//初始条件:栈S已存在。
//操作结果:若栈S不空,则以e返回栈顶元素。Push(&S,e)
//初始条件:栈S已存在。
//操作结果:在栈S的栈顶插入新的栈顶元素e。Pop(&S,&e)
//初始条件:栈S已存在。
//操作结果:删除S的栈顶元素,并以e返回其值。StackTraverse(S,visit(
))
//初始条件:栈S已存在。
//操作结果:从栈底到栈顶依次对S中的每个元素调用函数visit(
).}ADTstack3:源代码#include<stdlib.h>#include<stdio.h>#defineN39#defineM39intX;intmaze[N+2][M+2];structpoint{introw,col,predecessor;}queue[512];inthead=0,tail=0;voidshoudong_maze(intm,intn){inti,j;printf("\n\n");printf("请按行输入迷宫,0表示通路,1表示障碍:\n\n");for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",&maze[i][j]);}voidzidong_maze(intm,intn){inti,j;printf("\n迷宫生成中,,,,\n\n");system("pause");for(i=0;i<m;i++)for(j=0;j<n;j++)maze[i][j]=rand()%2;}voidprint_maze(intm,intn){inti,j;printf("\n迷宫生成结果如下:\n\n");printf("迷宫入口\n");printf("↓");for(i=0;i<m;i++){printf("\n");for(j=0;j<n;j++){if(maze[i][j]==0)printf("□");if(maze[i][j]==1)printf("■");}}printf("→迷宫出口\n");}voidresult_maze(intm,intn){inti,j;printf("迷宫通路(用“鼠”表示)如下所示:\n\t");for(i=0;i<m;i++){printf("\n");for(j=0;j<n;j++){if(maze[i][j]==0||maze[i][j]==2)printf("□");if(maze[i][j]==1)printf("■");if(maze[i][j]==3)printf("鼠");}}}voidenqueue(structpointp){queue[tail]=p;tail++;}structpointdequeue(){head++;returnqueue[head-1];}intis_empty(){returnhead==tail;}voidvisit(introw,intcol,intmaze[41][41]){structpointvisit_point={row,col,head-1};maze[row][col]=2;enqueue(visit_point);}intmgpath(intmaze[41][41],intm,intn){X=1;structpointp={0,0,-1};if(maze[p.row][p.col]==1){printf("\n\n");printf("此迷宫无解\n\n");X=0;return0;}maze[p.row][p.col]=2;enqueue(p);while(!is_empty()){p=dequeue();if((p.row==m-1)&&(p.col==n-1))break;if((p.col+1<n)&&(maze[p.row][p.col+1]==0))visit(p.row,p.col+1,maze);if((p.row+1<m)&&(maze[p.row+1][p.col]==0))visit(p.row+1,p.col,maze);if((p.col-1>=0)&&(maze[p.row][p.col-1]==0))visit(p.row,p.col-1,maze);if((p.row-1>=0)&&(maze[p.row-1][p.col]==0))visit(p.row-1,p.col,maze);}if(p.row==m-1&&p.col==n-1){printf("\n\n");printf("迷宫路径为:\n");printf("(%d,%d)\n",p.row,p.col);maze[p.row][p.col]=3;while(p.predecessor!=-1){p=queue[p.predecessor];printf("(%d,%d)\n",p.row,p.col);maze[p.row][p.col]=3;}}else{printf("\n\n");printf("此迷宫无解!\n\n");X=0;}return0;}intmain(){inti,m,n,cycle=0;system("cls");system("color1f");printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("┃必做题:走迷宫游┃\n");printf("┃姓名:智怡┃\n");printf("┃学号:1314010208┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");while(cycle!=(-1)){printf("╔══════════════════════════════════╗\n");printf("║欢迎进入走迷宫游戏演示系统║\n");printf("║║\n");printf("║1.手动生成迷宫║\n");printf("║2.系统自动生成迷宫║\n");printf("║3.退出系统║\n");printf("╚══════════════════════════════════╝\n");printf(">>>>>>>\n");printf("请选择你的操作[]\b\b");scanf("%d",&i);switch(i){case1:printf("\n请输入行数[]\b\b");scanf("%d",&m);printf("\n");printf("请输入列数[]\b\b");scanf("%d",&n);while((m<=0||m>39)||(n<=0||n>39)){printf("\n抱歉,你输入的行列数超出预设范围(0-39,0-39),请重新输入:\n\n");printf("请输入行数[]\b\b");scanf("%d",&m);printf("\n");printf("请输入列数[]\b\b");scanf("%d",&n);}shoudong_maze(m,n);print_maze(m,n);mgpath(maze,m,n);if(X!=0)result_maze(m,n);printf("\n\nPressEnterContiue!\n");getchar();while(getchar()!='\n');break;case2:printf("\n请输入行数[]\b\b");scanf("%d",&m);printf("\n");printf("请输入列数[]\b\b");scanf("%d",&n);while((m<=0||m>39)||(n<=0||n>39)){printf("\n抱歉,你输入的行列数超出预设范围(0-39,0-39),请重新输入!\n\n");printf("请输入行数[]\b\b");scanf("%d",&m);printf("\n");printf("请输入列数[]\b\b");scanf("%d",&n);}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 去污区管理课件
- 2024届新疆阿克苏市农一师中学校高三年级四月考试数学试题
- 2024年石家庄道路客运驾驶员从业资格模拟考试题
- 2024年长沙考客运资格证答题技巧和方法
- 2024年福州客运实训
- 2024年承德道路运输客运从业资格证模拟考试
- 2025届安徽省安庆二中、天成中学高一生物第一学期期末质量检测模拟试题含解析
- 河南省安阳市2025届数学高三第一学期期末监测试题含解析
- 2025届辽宁省沈阳二中、抚顺二中高三生物第一学期期末复习检测模拟试题含解析
- 河南省八市2025届数学高二上期末综合测试试题含解析
- 《智能建造导论》 课件全套 刘占省 第1-12章 智能建造的兴起-中国智能建造之路
- 树立信心主题班会课件1
- 临床医学中的病患随访与健康教育
- 山东省济南市2023-2024学年三年级上学期期中数学试卷
- 全国优质课一等奖高中物理必修一《曲线运动》课件
- 圆筒混料机-设计说明书
- 地下室顶板后浇带加固方案(钢管及工字钢)
- 高级流行病学与医学统计学智慧树知到课后章节答案2023年下浙江中医药大学
- 第四单元《逻辑的力量》一等奖创新教案-高中语文统编版选择性必修上册
- 保健食品及食品安全行业SWOT分析
- 光伏发电项目进度控制计划
评论
0/150
提交评论