c++迷宫游戏实验报告.doc_第1页
c++迷宫游戏实验报告.doc_第2页
c++迷宫游戏实验报告.doc_第3页
c++迷宫游戏实验报告.doc_第4页
c++迷宫游戏实验报告.doc_第5页
免费预览已结束,剩余10页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、问题描述程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向健操纵老鼠在规定的时间内走到粮仓处。基本要求:(1) 老鼠形象可以辨认,可用键盘操纵老鼠上下左右移动;(2) 迷宫的墙足够结实,老鼠不能穿墙而过;(3) 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,并给出一条路径,否则提示失败。提高要求:(1) 添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;(2) 增加闯关和计分功能;(3) 找出走出迷宫的所有路径,以及最短路径。 2需求分析软件的基本功能:通过键盘控制光标移动实现老鼠在迷宫中的行走、全部路径和最短路径的显示、自定义地图(墙变路,路变墙)。在老鼠闯关只能在地图显示是路的地方行走,不能穿墙,有计时功能,当时间结束时若没有到达指定地点,显示game over,查看排行榜,游戏结束,若成功到达指定位置,进去下一关,直到所有关结束,程序结束;。输入/输出形式:用户可以通过控制台,根据输入提示。输入形式: 方向键、空格键、enter键输出形式: 输出地图菜单。 输出地图 输出是否成功信息、输出排行榜 3概要设计(1)主程序流程图1:主程序流程图(3)模块调用关系:本程序中函数包括:main函数,menu函数,menu2函数,mouse类内函数,path类内函数,change函数, 函数调用关系如下:图2:函数调用关系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; void 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);/打印每条路径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)=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(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(Name);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_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(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 ;default: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)。主要功能就是清空屏幕。9、课程设计心得体会课程设计是一次可以让我们所学的理论与实际相结合的机会。我们选择了迷宫游戏这一题目。我这次的程序准确来说还算不上一个游戏,刚开始想要自学MFC因为时间原因没有实现,这是一个遗憾。但学习不会随着课设的结束而结束,课程也给我指明了未

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论