c++迷宫游戏实验报告Word下载.docx
- 文档编号:6498962
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:17
- 大小:150.21KB
c++迷宫游戏实验报告Word下载.docx
《c++迷宫游戏实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《c++迷宫游戏实验报告Word下载.docx(17页珍藏版)》请在冰点文库上搜索。
本程序中函数包括:
main函数,menu函数,menu2函数,mouse类内函数,path类内函数,change函数,
函数调用关系如下:
图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);
//打印地图
voidoperate(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)
gotov3;
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);
cout<
<
"
Welcome”〈〈Name;
Loc1(15,5);
△▼△▼第"
〈t<
〈”关▼△▼△"
〈〈endl;
〈endl;
a();
//菜单初始状态
chark;
intsel=1;
//选中第一项
while
(1){
k=getch();
//移动上下方向键
switch(k){
case72:
//上移
if(sel〉1)
{
sel-—;
if(sel==1)
a();
elseif(sel==2)
b();
elseif(sel==3)
c();
elseif(sel==4)
d();
elseif(sel==5)
menue();
}
break;
case80:
//下移
if(sel<
6)
sel++;
a();
b();
d();
}
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);
elseif(sel==5)//退出
exit(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);
〈””;
Loc(2*m_y+X,m_x+Y);
cout〈<
♂"
;
map[m_x][m_y]=3;
求全部路径
输出迷宫所有路径
intdir[4][2]={{—1,0},{1,0},{0,-1},{0,1}};
//上下左右
intd,tx,ty,p;
for(d=0;
d<
4;
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;
}
更改地图功能
charkey;
Loc2(sx,sy);
while
(1){
key=getch();
switch(key){
Loc2(sx,—-sy);
break;
Loc2(sx,sy++);
case75:
Loc2(sx-=2,sy);
case77:
Loc2(sx+=2,sy);
case32:
if(MAP[sy][sx/2]==1)
{
MAP[sy][sx/2]=0;
Loc1(sx,sy);
cout〈<
"
;
}
elseif(MAP[sy][sx/2]==0)
{
MAP[sy][sx/2]=1;
cout<
〈”■"
}
break;
return;
default:
5、编码与调试分析
1.编码与调试过程中遇到的问题及解决办法:
【问题一】通过清屏打印地图实现老鼠移动,屏幕闪烁严重
解决办法:
分析得知,通过移动光标打印老鼠位置,可以解决屏闪问题
解决此问题的核心代码:
COORDpos={a,b};
HANDLEhOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pos);
2.待解决问题:
①时间不能实现连续变化
3、使用说明
进入菜单,根据提示进行选择:
方向键选择,enter键进入
4、测试结果
(1)进入页面
(2)菜单页面
(3)闯关
(4)打印路径
(5)自定义地图
(6)查看排行榜
8、自学知识
在课程设计过程中,特别是在代码编写和调试的过程中,自学了很多新的知识.例如Loc()函数,包含于表头文件#include<
window.h〉。
其功能是:
移动光标位置,更改控制台输出颜色。
还有一个知识点是清屏函数,它也是包含于〈stdlib。
h>
头文件中的,使用形式为system(”CLS”)。
主要功能就是清空屏幕。
9、课程设计心得体会
课程设计是一次可以让我们所学的理论与实际相结合的机会。
我们选择了迷宫游戏这一题目。
我这次的程序准确来说还算不上一个游戏,刚开始想要自学MFC因为时间原因没有实现,这是一个遗憾.但学习不会随着课设的结束而结束,课程也给我指明了未来努力的方向。
课程中最大的困难还是一些难以查出的错误,编译时查不出的错误,其被发现时很可能只是位置的错误,仅隔数行,这些微小的信息却极大地影响了整体的效果。
这不仅存在于一个程序之中,因而我对于生活中的细节也有了改观,对于整体和局部的观念也有了更多的见解。
参考书:
[1]《c++面向对象程序设计》清华大学出版社谭浩强著
[2]《数据结构(C++版)》清华大学出版社王红梅、胡明、王涛著
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 迷宫 游戏 实验 报告