《数据结构课程设计》走迷宫游戏

合集下载

迷宫游戏数据结构课程设计

迷宫游戏数据结构课程设计

迷宫游戏数据结构课程设计
1、简介
本文档旨在设计一个迷宫游戏的数据结构课程项目,通过使用合适的数据结构和算法,实现一个能够自动和解决迷宫的程序。

本项目将使用C++语言来实现。

2、功能需求
本项目的主要功能如下:
- 自动一个迷宫地图
- 实现玩家在迷宫地图中的移动
- 实现迷宫的解决算法
3、技术方案
本项目将采用以下技术方案来实现功能:
3.1 迷宫算法
为了一个随机的迷宫地图,我们将采用深度优先搜索(DFS)算法或者随机Prim算法来迷宫。

这些算法可以保证的迷宫是连通的且没有死胡同。

3.2 玩家移动
玩家将使用键盘输入来控制移动,通过获取键盘输入来实现玩
家在迷宫中的移动。

游戏将使用图形界面来呈现迷宫和玩家的位置。

3.3 迷宫解决算法
迷宫解决算法将使用广度优先搜索(BFS)算法或者深度优先搜
索(DFS)算法来搜索迷宫的路径。

该算法将从起点出发,逐步搜索
迷宫的每个可达点,直到找到终点或者遍历完整个迷宫。

4、开发计划
本项目的开发计划如下:
1、确定项目需求和技术方案 - 2天
2、实现迷宫算法 - 3天
3、实现玩家移动功能 - 2天
4、实现迷宫解决算法 - 3天
5、创建图形界面 - 2天
6、进行测试和调试 - 3天
7、完善文档和准备演示 - 2天
5、附件
本文档没有附件。

6、法律名词及注释
本文档没有涉及任何法律名词及注释。

数据结构课程设计(迷宫问题)

数据结构课程设计(迷宫问题)

课程设计报告课程名称数据结构课程设计课题名称迷宫问题专业班级学号姓名指导教师2012年6月9日课程设计任务书课程名称数据结构课程设计课题迷宫问题专业班级学生姓名学号指导老师审批任务书下达日期:2012年6月9日任务完成日期:2012年6月16日一、设计内容与设计要求1.设计内容:1)问题描述以一个M*N的长方阵表示迷宫,0和1分别表示迷宫中的通路和墙壁。

设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出米有通路的结论。

2)基本要求a.实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。

求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一个坐标的方向。

b.编写递归形式的算法,求得迷宫中所有可能的通路。

3)测试数据迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。

0 0 1 0 0 0 1 00 0 1 0 0 0 1 00 0 0 0 1 1 0 10 1 1 1 0 0 1 00 0 0 1 0 0 0 00 1 0 0 0 1 0 10 1 1 1 1 0 0 11 1 0 0 0 1 0 11 1 0 0 0 0 0 04计算机解迷宫通常用的是“穷举求解”方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则,沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。

假如所有可能的通路都探索到而未能到达出口,则设定的迷宫没有通路。

可以二维数组存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(m,n)。

为处理方便起见,可在迷宫的四周加一圈障碍。

对于迷宫中任一位置,均可约定有东、南、西、北四个方向可通。

2.设计要求:●课程设计报告规范1)需求分析a.程序的功能。

b.输入输出的要求。

2)概要设计a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。

课程设计-走迷宫---

课程设计-走迷宫---

《数据结构》课程设计报告(走迷宫)学院:湖南工学院班级学号:姓名:指导教师:完成日期:2011年1月3号目录1.需求分析 (3)2.程序的详细设计 (3)3.调试分析 (8)4.主函数 (9)5.测试 (10)6.心得体会 (12)7.附录 (13)1.需求分析程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。

游戏的任务是使老鼠走到粮仓处。

要求:1)迷宫的墙足够结实,老鼠不能穿墙而过;2)正确检测结果,若老鼠在能走到粮仓处,提示成功,否则提示失败;3)老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2.程序的详细设计首先,确定迷宫的存储结构,说明位置在迷宫中的行坐标和列坐标。

typedef int Status;typedef struct{int r,c; /*迷宫中位置的坐标*/}PosType;typedef struct{int m,n;char arr[RANGE][RANGE]; /*用二维数组表示迷宫*/}MazeType;第二,确定放入栈中的元素的存储结构,表明通道块在路径上的“序号”,通道块的坐标位置以及下一步要走的方向。

typedef int directiveType;typedef struct{int step;PosType seat; /*当前位置在迷宫中的坐标*/directiveType di; /*从当前位置走到下一位置的方向*/}ElemType;第三,确定栈的存储结构。

typedef struct NodeType{ElemType data;struct NodeType *next;}NodeType,*LinkType;typedef struct{LinkType top; /*链栈的顶点定义*/int size;}Stack;void InitStack(Stack &S) /*构建一个空栈*/{S.top=NULL;S.size=0;}Status MakeNode(LinkType &p,ElemType e){p=(NodeType *)malloc(sizeof(NodeType));if(!p)return FALSE; /*存储分配失败*/p->data=e;p->next=NULL;return TRUE;}定义在什么情况下要入栈Status Push(Stack &S,ElemType e){LinkType p;if(MakeNode(p,e)){p->next=S.top;S.top=p;S.size++;return TRUE;}return FALSE;}判断栈是否为空Status StackEmpty(Stack S) /*若栈为空栈,则返回TRUE,否则返回FALSE*/{if(S.top==NULL)return TRUE;return FALSE;}定义在什么情况下要出栈Status Pop(Stack &S,ElemType &e){LinkType p;if(StackEmpty(S))return FALSE;else{p=S.top;S.top=S.top->next;e=p->data;S.size--;free(p);return TRUE;}}定义什么情况下迷宫可以走Status pass(MazeType maze,PosType curpos) {int m,n;m=curpos.r;n=curpos.c;if(maze.arr[m][n]==' ')return TRUE;return FALSE;}定义什么情况下已经走出了迷宫Status Same(PosType curpos,PosType end){if(curpos.r==end.r && curpos.c==end.c)return TRUE;return FALSE;}定义走通的位置要用*标记void FootPrint(MazeType &maze,PosType curpos) {int m,n;m=curpos.r;n=curpos.c;maze.arr[m][n]='*';}定义在探索过程中老鼠走的方向关系PosType NextPos(PosType curpos,int di){switch(di){case 1:curpos.c++;break;case 2:curpos.r++;break;case 3:curpos.c--;break;case 4:curpos.r--;break;}return curpos;}定义走过但没有走通位置要用@标记void MarkPrint(MazeType &maze,PosType p){maze.arr[p.r][p.c]='@';}void PrintMaze(MazeType ma){int i,j;printf("\n");for(i=0;i<ma.m;i++){printf("\t");for(j=0;j<ma.n;j++){printf("%c ",ma.arr[i][j]);}printf("\n");}printf("\n");}将数组转化为迷宫void InitMaze(MazeType &maze,int a[M][N],int row,int col) {int i,j;maze.m=row;maze.n=col;for(i=0;i<row;i++)for(j=0;j<col;j++){if(a[i][j]==0)maze.arr[i][j]=' ';elsemaze.arr[i][j]='#';}}探索迷宫Status MazePath(MazeType &maze,PosType start,PosType end) {Stack s;int curstep=1; //探索第一步Status found=FALSE;ElemType e;PosType curpos=start; //设定当前位置为入口InitStack(s);do{if(pass(maze,curpos)) //当前位置可以通过,即是未曾走过的通道块{FootPrint(maze,curpos); //留下足迹{e.step=curstep;e.seat=curpos;e.di=1;}Push(s,e); //加入路径if(Same(curpos,end))// 到达终点{found=TRUE;}else{curpos=NextPos(curpos,1); //下一位置是当前位置的北邻curstep++; //探索下一步}}else //当前位置不能通过if(!StackEmpty(s)){Pop(s,e);while((e.di==4) && !StackEmpty(s)){MarkPrint(maze,e.seat); //留下不能通过的标记,并退回一步Pop(s,e);curstep--;}if(e.di<4){e.di++;Push(s,e); //探索下一方向curpos=NextPos(e.seat,e.di); //设定当前位置是该新方向上的相邻块}}}while(!StackEmpty(s) && !found);return found;}void Print(int maze[][N]){int i,j;printf("表示迷宫的数组\n");for(i=0;i<M;i++){printf("\t");for(j=0;j<N;j++){printf("%d ",maze[i][j]);}printf("\n");}printf("\n");}3.程序的实现标记入口位置(说明此位置已试探),把入口压入栈中栈非空栈非空取栈顶元素初始试探方向存在试探方向确定试探位置的坐标试探位置是否为迷宫出口打印路径上每个位置是否为通道标记该位置换个方向试探返回该位置及方向进栈前进到下一位置C++ 方向向东r++ 方向向南C-- 方向向西r-- 方向向北r--c++c-- 位置(c,r)r++4.主函数设计void main(){int maze[M][N]={ 输出迷宫数组1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,0,1,1,0,1,1,1,1,0,0,1,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1};MazeType L;PosType start,end;Print(maze);InitMaze(L,maze,M,N);start.r=2; 定义迷宫入口和出口 start.c=4;end.r=6;end.c=9;printf("由数组转化出的迷宫");PrintMaze(L);if(MazePath(L,start,end))printf("迷宫的路径,用*表示");elseprintf("此迷宫没有通路!");PrintMaze(L);}5.测试第一次测试start.r=2; start.c=4; end.r=6;end.c=9;第二个测试start.r=1; start.c=1; end.r=6;end.c=96.心得体会数据结构是在整个计算机科学与技术领域上广泛被使用的术语。

数据结构课程设计报告——可视化走迷宫游戏

数据结构课程设计报告——可视化走迷宫游戏

可编辑修改西安建筑科技大学 课程设计(论文)题 目: 院 (系): 专业班级: 姓 名: 学 号: 指导教师:可视化走迷宫游戏2011 年 9 月 15 日欢迎下载可编辑修改西安建筑科技大学课程设计(论文)任务书专业班级: 计算机901 学生姓名: 指导教师(签名):一、课程设计(论文)题目走迷宫游戏:程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的 右下方有一个粮仓。

游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到 粮仓处。

二、本次课程设计(论文)应达到的目的数据结构是实践性很强的课程。

课程设计是加强学生实践能力的一个强有力手 段。

课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。

严格实 施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训 练,将起到显著的促进作用。

本题目要达到目的:熟练掌握最短路径的算法设计。

三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术 参数、设计要求等)1、 老鼠形象可辨认,可用键盘操纵老鼠上下左右移动; 2、 迷宫的墙足够结实,老鼠不能穿墙而过; 3、 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败; 4、 添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙; 找出走出迷宫的所有路径,以及最短路径。

四、应收集的资料及主要参考文献:由于本课程没有安排“课内上机”学时,因此,在课程设计之前必须自己已经上 机练习了“线性表”的基本操作。

参考文献:1. 本年级使用的教材:数据结构与算法分析(C++版)(第二版)影印版 2005.72. 数据结构与算法,科学出版社,2005.08;赵文静 祁飞等编著 3. 数据结构-C++语言描述,西安交通大学出版社,1999.01,赵文静编著 4. 《Visual C++编程实例》(任意一本此类书籍)五、审核批准意见教研室主任(签字)欢迎下载可编辑修改摘要本设计是为了实现一个可视化迷宫,以及利用最短路径算法 寻找迷宫的出路以及将最短路径打印在屏幕上,并且限制小老鼠 不能穿越墙,只能在路径上移动。

数据结构课程设计之迷宫游戏

数据结构课程设计之迷宫游戏

数据结构课程设计之迷宫游戏##大学数据结构课程设计报告题目: 走迷宫游戏院(系): 计算机工程学院学生姓名:班级: 学号:起迄日期: 2011-6-21 至 2011-6-30 指导教师:2010—2011年度第 2 学期一、需求分析1 问题描述走迷宫游戏程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。

游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。

2 基本功能1) 老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2) 迷宫的墙足够结实,老鼠不能穿墙而过;3) 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;4) 添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;5) 找出走出迷宫的所有路径,以及最短路径。

利用序列化功能实现迷宫地图文件的存盘和读出等功能 3 输入输出输入为字符型:1, 2, 3 分别实现功能选择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>| a,a ?D,i=1,2,3,……,n} i-1ii-1i基本操作:SqStack *InitStack()操作结果:创建一个空栈void Push(SqStack *S,SElemType data)初始条件:栈S已存在操作结果:插入一个元素,并且使数据个数加一(top++)void Pop(SqStack *S)初始条件:栈S已存在。

数据结构课程设计报告-迷宫求解(递归与非递归)

数据结构课程设计报告-迷宫求解(递归与非递归)

《数据结构》课程设计迷宫求解班级:学号:姓名:指导老师:迷宫求解1、问题描述输入一个任意大小的迷宫数据,用递归和非递归两种方法求出一条走出迷宫的路径,并将路径输出。

2、设计思路从入口出发,按某一方向向前探索,若能走通并且未走过,即某处可以到达,则到达新点,否则试探下一个方向;若所有的方向均没有通路,则沿原路返回前一点,换下一个方向再继续试探,直到找到一条通路,或无路可走又返回入口点。

在求解过程中,为了保证在到达某一点后不能向前继续行走(无路)时,能正确返回前一点以便继续从下一个方向向前试探,则需要用一个栈(递归不需要)保存所能够到达的每一点的下标及从该点前进的方向。

设迷宫为m行n列,利用maze[m][n]来表示一个迷宫,maze[i][j]=0或1;其中:0表示通路,1表示不通,当从某点向下试探时,中间点有四个方向可以试探,而四个角点有两个方向,其他边缘点有三个方向,为使问题简单化,用maze[m+2][n+2]来表示迷宫,而迷宫的四周的值全部为1,这样做使问题简单了,每个点的试探方向全部为4,不用再判断当前点的试探方向有几个。

3、数据结构设计在上述表示迷宫的情况下,每个点有4个方向去试探,如当前点的坐标(x,y),与其相邻的4个点的坐标都可根据与该点的相邻方位而得到。

因为出口在(m,n),因此试探顺序规定为:从当前位置向前试探的方向为从正东沿顺时针方向进行。

为了简化问题,方便求出新点的坐标,将从正东开始沿顺时针进行的4个方向的坐标增量放在一个结构数组move[4]中,在move数组中,每个元素有两个域组成,x为横坐标增量,y为纵坐标增量。

这样对move设计会很方便地求出从某点(x,y)按某一方向v(0<=v<=3)到达的新点(i,j)的坐标:i=x+move[v].x;j=y+move[v].y;当到达了某点而无路可走时需返回前一点,再从前一点开始向下一个方向继续试探。

因此,压入栈中的不仅是顺序到达的各点的坐标,而且还要有从前一点到达本点的方向。

数据结构课程设计之迷宫游戏

数据结构课程设计之迷宫游戏

数据结构课程设计之迷宫游戏##大学数据结构课程设计报告题目: 走迷宫游戏院(系): 计算机工程学院学生姓名:班级: 学号:起迄日期: 2011-6-21 至 2011-6-30 指导教师:2010—2011年度第 2 学期一、需求分析1 问题描述走迷宫游戏程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。

游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。

2 基本功能1) 老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2) 迷宫的墙足够结实,老鼠不能穿墙而过;3) 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;4) 添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;5) 找出走出迷宫的所有路径,以及最短路径。

利用序列化功能实现迷宫地图文件的存盘和读出等功能 3 输入输出输入为字符型:1, 2, 3 分别实现功能选择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>| a,a ?D,i=1,2,3,……,n} i-1ii-1i基本操作:SqStack *InitStack()操作结果:创建一个空栈void Push(SqStack *S,SElemType data)初始条件:栈S已存在操作结果:插入一个元素,并且使数据个数加一(top++)void Pop(SqStack *S)初始条件:栈S已存在。

数据结构课程设计--求解迷宫问题

数据结构课程设计--求解迷宫问题

摘要设计一个简单迷宫程序,从入口出发找到一条通路到达出口。

编制程序给出一条通过迷宫的路径或报告一个“无法通过”的信息。

首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。

用“穷举求解”方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。

假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。

可以用二维数组存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(n,n)。

为处理方便起见,可在迷宫的四周加一障碍。

对于迷宫任一位置,均可约定有东、南、西、北四个方向可通。

关键词:迷宫;栈;链表;二维数组目录1 问题描述 (1)2 需求分析 (1)3 概要设计 (1)3.1抽象数据类型定义 (1)3.2模块划分 (2)4 详细设计 (2)4.1数据类型的定义 (2)4.2主要模块的算法描述 (3)5 测试分析 (6)6 课程设计总结 (7)参考文献 (7)附录(源程序清单) (8)1 问题描述迷宫是一个M行N列的0-1矩阵,其中0表示无障碍,1表示有障碍。

设入口为(1,1)出口为(M,N)每次移动只能从一个无障碍的单元移到其周围8个方向上任一无障碍的单元,编制程序给出一条通过迷宫的路径或报告一个“无法通过”的信息。

2 需求分析(1)首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。

求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。

否则报告一个无法通过的信息。

(2)建立InitStack函数,用于构造一个空栈。

(3)建立DestroyStack函数,用于销毁栈。

(4)建立Pop函数,用于删除栈顶元素,返回栈顶元素的值。

(5)建立Push函数,用于插入新的栈顶元素。

(6)建立NextPos函数,用于定位下一个位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息工程学院课程设计报告课程名称《数据结构》课题名称走迷宫游戏专业班级学号姓名联系方式指导教师2015 年 12 月 27 日目录1、数据结构课程设计任务书............................................................... 11.1、题目........................................................................... 11.2、要求........................................................................... 12、总体设计............................................................................. 12.1、设计思路及总体组成框架......................................................... 12.2、操作流程图..................................................................... 23、详细设计............................................................................. 53.1、程序中所采用的数据结构及存储结构的说明......................................... 53.2、函数功能模块说明............................................................... 53.3、各函数的调用关系 ............................................................................................................................... 74、调试与测试:......................................................................... 74.1、调试方法与步骤:............................................................... 74.2、测试结果的分析与讨论:......................................................... 84.3、测试过程中遇到的主要问题及采取的解决措施:................................... 106、源程序清单......................................................................... 107、数据结构课程设计总结............................................................... 148、参考文献........................................................................... 141、数据结构课程设计任务书1.1题目程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。

游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。

1.2、要求1) 老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2) 迷宫的墙足够结实,老鼠不能穿墙而过;3) 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;4) 添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;5) 找出走出迷宫的所有路径。

利用序列化功能实现迷宫地图文件的存盘和读出等功能2、总体设计2.1、设计思路及总体组成框架1、思路(1).利用mfc可以把迷宫地图以及老鼠形象可变的导出来。

(2).需要有墙有路,通过把迷宫地图划分成一个一个小方块,通过一个数组的值来判断是墙是路。

(1表示墙0表示路)(3).利用栈,来存入当前位置,然后判断下一位置,是否有路,存入栈中或出栈。

(4).把每个数组元素对应一个按钮根据点击按钮,改变数组的值从而改变墙和路的转化。

(5).键盘接受字符,根据字符调用不同的图片,达到老鼠超前走的效果。

2、数据结构本程序运用的逻辑结构是线性和存储结构为顺序。

之所以采用本结构是因为,迷宫主要用到栈来储存当前位置,和判断下一位置,来入栈。

抽象数据类型线性表的定义如下:ADT Stack{数据对象:D={ai | ai∈ElemSet,i=1,2,3……,n,n≥0}数据关系:R1={<ai-1,ai>| ai-1,ai∈D,i=1,2,3,……,n}基本操作:Initstack(&s)操作结果:构造一个空栈s。

Stackempty(s)初始条件:栈s已经存在。

操作结果:将s清为空栈。

Push(&s,e)初始条件:栈s已经存在。

操作结果:插入元素e为新的栈顶元素。

Pop(&s,&e)初始条件:栈s已经存在,且非空。

操作结果:删除s的栈顶元素,并用e返回其值。

} ADT Stack3、根据课程设计题目的功能要求,总体概要的组成框图如下:2.2、操作流程图1、键盘操作流程:2、模块流程图:面向对象而非面向工程的程序设计,事件和判断都具有同时性和并发性。

3、游戏界面显示3、详细设计3.1、程序中所采用的数据结构及存储结构的说明数据类型:结构体,整形数据输入:按照窗口、菜单提示按鼠标左键移动老鼠位置,按键盘的上、下、左、右键输出:可视化迷宫3.2、函数功能模块说明(1)开始游戏void CMainFrame::OnStart():开始游戏。

void CLabyrinthView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags):小老鼠键盘操。

第一个参数表示哪个按键,接受上、下、左、右字符,判断调用哪个小老鼠图片,最后用脚印图片覆盖老鼠图片,达到朝前走,留下脚印的效果。

(2)重新开始void CMainFrame::OnSysmap():系统地图。

void CLabyrinthView::OnSelfmap()、void CLabyrinthView::OnLButtonDown(UINT nFlags, CPoint point):绘制地图函数。

达到墙变路、路变墙的目的。

(3)保存图片void CMainFrame::OnSave():保存地图。

(4)载入图片void CMainFrame::OnOpen():载入地图。

BOOL CLabyrinthView::OnEraseBkgnd(CDC* pDC):设置欢迎画面,载入图片。

(5)自绘地图void CLabyrinthView::OnLButtonDown(UINT nFlags, CPoint point):墙变路,路变墙(6)自动寻路void CLabyrinthView::OnAuto():为自动寻路函数。

其重要调用Seqstack * CSkfction::init_Seqstack()、int CSkfction::Empty_Seqstack(Seqstack *s)、int CSkfction::Push_Seqstack(Seqstack *s,DataType x)、intCSkfction::Pop_Seqstack(Seqstack *s,DataType *x)函数。

(7)设置时间int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct):到达在在状态栏中显示时间,调用了系统的函数SetTimer(1,1000,NULL); 第一个参数为对应时器的代号。

在一个程序中,可能有多个SetTimer,在Ontime响应时,可以根据第一个参数来确定是哪一个记时器所引起的事件。

第二个参数用于设置时间。

第三个参数为一个回调函数的指针,用NULL的话,系统会把SetTimer 产生的消息加入消息队列中。

调用了一下三个函数信息,来显示时间。

m_mandToIndex(IDS_LASTTIME); //按规定宽度显示m_wndStatusBar.SetPaneInfo(0,IDS_LASTTIME,SBPS_POPOUT,150);//剩余时间凸出来m_wndStatusBar.SetPaneText(1,str2);//在窗格中显示文本信息。

void CMainFrame::OnTimer(UINT nIDEvent):根据时间判断老鼠是否饿死。

void CMainFrame::OnSettime():设置时间。

(8)音效设置void CMainFrame::OnMusicOn():音乐来。

void CMainFrame::OnMusicOff():音乐关。

(9)游戏退出void CMainFrame::OnAppExit():void CMainFrame::OnClose():退出游戏,弹出对话框。

(10)框架BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs):设置窗口信息。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct):在状态栏显示时间信息。

3.3、各函数的调用关系程序界面:4、调试与测试:4.1、调试方法与步骤:内容包括:调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析:1.实际完成的情况说明(完成的功能,支持的数据类型等);基本功能都已经完成,而且还加了保存图片、载入图片、设置时间、游戏帮助等功能。

2.上机过程中出现的问题及其解决方案;(1) 问题:每次走完迷宫,它都会保持现有状态,如果重新开始,要自己按重新开始,次才能开始,很麻烦。

解决方案:void CMainFrame::OnTimer(UINT nIDEvent)函数中调用voidCMainFrame::OnOpen(),这样在每次游戏结束时就可以调用这个函数,载入图片。

(2)问题:通过键盘来如何控制对象(老鼠)的移动,我希望达到一种老鼠会动的效果,即朝左走头往左哦哦,朝右走,头朝右。

相关文档
最新文档