c++迷宫游戏实验报告

上传人:m**** 文档编号:486562248 上传时间:2023-03-22 格式:DOC 页数:15 大小:226KB
返回 下载 相关 举报
c++迷宫游戏实验报告_第1页
第1页 / 共15页
c++迷宫游戏实验报告_第2页
第2页 / 共15页
c++迷宫游戏实验报告_第3页
第3页 / 共15页
c++迷宫游戏实验报告_第4页
第4页 / 共15页
c++迷宫游戏实验报告_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《c++迷宫游戏实验报告》由会员分享,可在线阅读,更多相关《c++迷宫游戏实验报告(15页珍藏版)》请在金锄头文库上搜索。

1、1、问题描述程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向健操纵老鼠在规定的时间内走到粮仓处。基本要求:(1) 老鼠形象可以辨认,可用键盘操纵老鼠上下左右移动;(2) 迷宫的墙足够结实,老鼠不能穿墙而过;(3) 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,并给出一条路径,否则提示失败。提高要求:(1) 添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;(2) 增加闯关和计分功能;(3) 找出走出迷宫的所有路径,以及最短路径。 2需求分析软件的基本功能:通过键盘控制光标移动实现老鼠在迷宫中的行走、全部路径和最短路径的显

2、示、自定义地图(墙变路,路变墙)。在老鼠闯关只能在地图显示是路的地方行走,不能穿墙,有计时功能,当时间结束时若没有到达指定地点,显示game over,查看排行榜,游戏结束,若成功到达指定位置,进去下一关,直到所有关结束,程序结束;。输入/输出形式:用户可以通过控制台,根据输入提示。输入形式: 方向键、空格键、enter键输出形式: 输出地图菜单。 输出地图 输出是否成功信息、输出排行榜 3概要设计(1)主程序流程图1:主程序流程图(3)模块调用关系:本程序中函数包括:main函数,menu函数,menu2函数,mouse类内函数,path类内函数,change函数, 函数调用关系如下:图2:

3、函数调用关系4详细设计(1)实现概要设计的数据类型:Mouse类class mouseprivate:int m_x;int m_y;time_t begin ,stop;public:int move_up(int mapxy,int end);/向上移动int move_down(int mapxy,int end);/向下移动int move_left(int mapxy,int end);/左int move_right(int mapxy,int end);/右void initialize(int mapxy,int end)m_x=S;m_y=S;mapendend=9; voi

4、d print(int mapxy,int end);/打印地图void operate(int mapxy,int end,char name30);/操作void success(); void charts(char Name30);/排行榜;Path类class Pathpublic:Path()pa=1000;void path(int i,int j,int mapxy,int &t,int end);int check(int i, int j, int d, int mapxy,int end);void Print2(int mapxy, int &t,int end);/打

5、印每条路径void allpath(int s,int e,int mapxy,int &t,int end);private:int pa;(2)主程序以及其它模块的算法描述:主函数具体代码:int main()menu();file(1);v:if(menu2(1,11)=1)/1,返回当前关卡菜单,0,进入下一关卡goto v;v2:file(2);if(menu2(2,12)=1)goto v2;v3:file(3);if(menu2(3,13)=1)goto v3;v4:file(4);if(menu2(4,15)=1)goto v4;v5:file(5);if(menu2(5,18

6、)=1)goto v5;final();return 0;Menu2 函数具体代码int menu2(int t,int e)mouse mickey;Path path;int p=0;system(cls);Loc1(15,3);coutName;Loc1(15,5);cout第t关endl;cout1)sel-;if(sel=1)a();else if(sel=2)b();else if(sel=3)c();else if(sel=4)d();else if(sel=5)menue();break;case 80:/下移if(sel6)sel+;if(sel=1)a();else if(

7、sel=2)b();else if(sel=3)c();else if(sel=4)d();else if(sel=5)menue();break;case 13:/回车确定选择if(sel=1)/开始闯关mickey.operate(MAP,e,Name);return 0;else if(sel=2)/查看所有路径和最短路径system(cls);path.allpath(9,9,MAP,p,e);return 1;else if(sel=3)/更改地图change(2*(18-e),18-e,e);return 1;else if(sel=4)/查看排名mickey.charts(Nam

8、e);return 1;else if(sel=5)/退出exit(0);这个函数主要调用了各实现功能函数。其步骤为:用户进入菜单选项,方向键控制选中选项移动,enter进入选中选项。(3)其它模块的算法描述 控制老鼠移动函数功能:方向键移动老鼠。(上方向键进入Move_up函数)if(mapm_x-1m_y=1)return 0;else if(mapm_x-1m_y=9)mapm_xm_y=0;m_x-;mapm_xm_y=3;return -1;elsemapm_xm_y=0;Y=-1;X=0;Loc(2*m_y,m_x);cout ;Loc(2*m_y+X,m_x+Y);cout;m_

9、x-;mapm_xm_y=3; 求全部路径功能:输出迷宫所有路径int dir42=-1,0,1,0,0,-1,0, 1;/上下左右int d,tx,ty,p;for(d=0;d4;d+)if(check(i,j,d,map,end)=1)/检查是否可以走tx=i+dird0;ty=j+dird1;p=maptxty;/记录状态maptxty=4;/标记路径mapendend=0;if(tx=end&ty=end)/终点t+ ;/路径条数加一Print2(map,t,end);/终点elsepath(tx,ty,map,t,end);maptxty=p;更改地图功能char key;Loc2(

10、sx,sy);while(1)key=getch();switch(key)case 72:Loc2(sx,-sy);break;case 80:Loc2(sx,sy+);break;case 75:Loc2(sx-=2,sy);break;case 77:Loc2(sx+=2,sy);break;case 32:if(MAPsysx/2=1)MAPsysx/2=0;Loc1(sx,sy);cout ;Loc1(sx,sy);else if(MAPsysx/2=0)MAPsysx/2=1;Loc1(sx,sy);cout;Loc1(sx,sy);break;case 13:return ;de

11、fault:break;5、编码与调试分析1编码与调试过程中遇到的问题及解决办法:【问题一】通过清屏打印地图实现老鼠移动,屏幕闪烁严重解决办法:分析得知,通过移动光标打印老鼠位置,可以解决屏闪问题解决此问题的核心代码:COORD pos = a,b;HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hOut, pos);2.待解决问题:时间不能实现连续变化3、使用说明进入菜单,根据提示进行选择:方向键选择,enter键进入4、测试结果(1)进入页面(2) 菜单页面(3)闯关(4)打印路径 (5)自定义地图 (6)查看排行榜 8、自学知识在课程设计过程中,特别是在代码编写和调试的过程中,自学了很多新的知识。例如Loc()函数,包含于表头文件 #include 。 其功能是: 移动光标位置,更改控制台输出颜色。还有一个知识点是清屏函数,它也是包含于头文件中的, 使用形式为system(CLS)。主要功能就是清空屏幕。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号