c++迷宫游戏实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

111、问题描述程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向健操纵老鼠在规定的时间内走到粮仓处。基本要求:(1)老鼠形象可以辨认,可用键盘操纵老鼠上下左右移动;(2)迷宫的墙足够结实,老鼠不能穿墙而过;(3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,并给出一条路径,否则提示失败。提高要求:(1)添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;(2)增加闯关和计分功能;(3)找出走出迷宫的所有路径,以及最短路径。。2.需求分析软件的基本功能:通过键盘控制光标移动实现老鼠在迷宫中的行走、全部路径和最短路径的显示、自定义地图(墙变路,路变墙)。在老鼠闯关只能在地图显示是路的地方行走,不能穿墙,有计时功能,当时间结束时若没有到达指定地点,显示gameover,查看排行榜,游戏结束,若成功到达指定位置,进去下一关,直到所有关结束,程序结束;。输入/输出形式:用户可以通过控制台,根据输入提示。输入形式:①方向键、空格键、enter键输出形式:①输出地图菜单。②输出地图③输出是否成功信息、输出排行榜3.概要设计(1)主程序流程22图1:主程序流程图(3)模块调用关系:本程序中函数包括:main函数,menu函数,menu2函数,mouse类内函数,path类内函数,change函数,函数调用关系如下:33图2:函数调用关系4.详细设计(1)实现概要设计的数据类型:Mouse类classmouse{private:intm_x;intm_y;time_tbegin,stop;public:intmove_up(intmap[x][y],intend);//向上移动intmove_down(intmap[x][y],intend);//向下移动intmove_left(intmap[x][y],intend);//左intmove_right(intmap[x][y],intend);//右voidinitialize(intmap[x][y],intend){m_x=S;m_y=S;map[end][end]=9;}voidprint(intmap[x][y],intend);//打印地图44voidoperate(intmap[x][y],intend,charname[30]);//操作voidsuccess();voidcharts(charName[30]);//排行榜};Path类classPath{public:Path(){pa=1000;}voidpath(inti,intj,intmap[x][y],int&t,intend);intcheck(inti,intj,intd,intmap[x][y],intend);voidPrint2(intmap[x][y],int&t,intend);//打印每条路径voidallpath(ints,inte,intmap[x][y],int&t,intend);private:intpa;};(2)主程序以及其它模块的算法描述:主函数具体代码:intmain(){menu();file(1);v:if(menu2(1,11)==1)//1,返回当前关卡菜单,0,进入下一关卡gotov;v2:file(2);if(menu2(2,12)==1)gotov2;v3:file(3);if(menu2(3,13)==1)55gotov3;v4:file(4);if(menu2(4,15)==1)gotov4;v5:file(5);if(menu2(5,18)==1)gotov5;final();return0;}Menu2函数具体代码intmenu2(intt,inte){mousemickey;Pathpath;intp=0;system(cls);Loc1(15,3);coutWelcomeName;Loc1(15,5);cout△▼△▼第t关▼△▼△endl;coutendl;a();//菜单初始状态chark;intsel=1;//选中第一项while(1){k=getch();//移动上下方向键switch(k){66case72://上移if(sel1){sel--;if(sel==1)a();elseif(sel==2)b();elseif(sel==3)c();elseif(sel==4)d();elseif(sel==5)menue();}break;case80://下移if(sel6){sel++;if(sel==1)a();elseif(sel==2)b();elseif(sel==3)c();elseif(sel==4)d();elseif(sel==5)77menue();}break;case13://回车确定选择if(sel==1)//开始闯关{mickey.operate(MAP,e,Name);return0;}elseif(sel==2)//查看所有路径和最短路径{system(cls);path.allpath(9,9,MAP,p,e);return1;}elseif(sel==3)//更改地图{change(2*(18-e),18-e,e);return1;}elseif(sel==4)//查看排名{mickey.charts(Name);return1;}elseif(sel==5)//退出{88exit(0);}}}}这个函数主要调用了各实现功能函数。其步骤为:用户进入菜单选项,方向键控制选中选项移动,enter进入选中选项。(3)其它模块的算法描述控制老鼠移动函数功能:方向键移动老鼠。(上方向键进入Move_up函数)if(map[m_x-1][m_y]==1)return0;elseif(map[m_x-1][m_y]==9){map[m_x][m_y]=0;m_x--;map[m_x][m_y]=3;return-1;}else{map[m_x][m_y]=0;Y=-1;X=0;Loc(2*m_y,m_x);cout;Loc(2*m_y+X,m_x+Y);cout♂;m_x--;99map[m_x][m_y]=3;求全部路径功能:输出迷宫所有路径intdir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//上下左右intd,tx,ty,p;for(d=0;d4;d++){if(check(i,j,d,map,end)==1)//检查是否可以走{tx=i+dir[d][0];ty=j+dir[d][1];p=map[tx][ty];//记录状态map[tx][ty]=4;//标记路径map[end][end]=0;if(tx==end&&ty==end)//终点{t++;//路径条数加一Print2(map,t,end);//终点}else{path(tx,ty,map,t,end);map[tx][ty]=p;1100}}更改地图功能charkey;Loc2(sx,sy);while(1){key=getch();switch(key){case72:Loc2(sx,--sy);break;case80:Loc2(sx,sy++);break;case75:Loc2(sx-=2,sy);break;case77:Loc2(sx+=2,sy);break;case32:if(MAP[sy][sx/2]==1){MAP[sy][sx/2]=0;Loc1(sx,sy);cout;Loc1(sx,sy);1111}elseif(MAP[sy][sx/2]==0){MAP[sy][sx/2]=1;Loc1(sx,sy);cout■;Loc1(sx,sy);}break;case13:return;default:break;5、编码与调试分析1.编码与调试过程中遇到的问题及解决办法:【问题一】通过清屏打印地图实现老鼠移动,屏幕闪烁严重解决办法:分析得知,通过移动光标打印老鼠位置,可以解决屏闪问题解决此问题的核心代码:COORDpos={a,b};HANDLEhOut=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hOut,pos);2.待解决问题:①时间不能实现连续变化3、使用说明进入菜单,根据提示进行选择:方向键选择,enter键进入4、测试结果1122(1)进入页面(2)菜单页面(3)闯关1133(4)打印路径(5)自定义地图1144(6)查看排行榜8、自学知识在课程设计过程中,特别是在代码编写和调试的过程中,自学了很多新的知识。例如Loc()函数,包含于表头文件#includewindow.h。其功能是:移动光标位置,更改控制台输出颜色。还有一个知识点是清屏函数,它也是包含于stdlib.h头文件中的,使用形式为system(CLS)。主要功能就是清空屏幕。11559、课程设计心得体会课程设计是一次可以让我们所学的理论与实际相结合的机会。我们选择了迷宫游戏这一题目。我这次的程序准确来说还算不上一个游戏,刚开始想要自学MFC因为时间原因没有实现,这是一个遗憾。但学习不会随着课设的结束而结束,课程也给我指明了未来努力的方向。课程中最大的困难还是一些难以查出的错误,编译时查不出的错误,其被发现时很可能只是位置的错误,仅隔数行,这些微小的信息却极大地影响了整体的效果。这不仅存在于一个程序之中,因而我对于生活中的细节也有了改观,对于整体和局部的观念也有了更多的见解。参考书:[1]《c++面向对象程序设计》清华大学出版社谭浩强著[2]《数据结构(C++版)》清华大学出版社王红梅、胡明、王涛著

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功