没有合适的资源?快使用搜索试试~ 我知道了~
数据结构课程设计之迷宫游戏 若有侵权,可以联系本人进行移除。
资源推荐
资源详情
资源评论
##大学
数据结构课程设计报告
题目: 走迷宫游戏
院(系): 计算机工程学院
学生姓名:
班级: 学号:
起迄日期: 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()
对修改的地图数组进行保存
edit()
对修改的地图进行保存
savemap()
实现自动搜路
Mathpath()
对搜寻的路径进行输
出
print()
2.数据结构设计:
采用的是栈来存储数据,进栈实际是在栈中插入三元组,出栈则只数组的个数进行操作
抽象数据类型线性表的定义如下:
ADT SqStack{
数据对象:D={a
i
| a
i
∈SElemType,i=1,2,3……,n,n≥0}
数据关系:R1={<a
i-1
,a
i
>| a
i-1
,a
i
∈D,i=1,2,3,……,n}
基本操作:
SqStack *InitStack()
操作结果:创建一个空栈
void Push(SqStack *S,SElemType data)
初始条件:栈 S 已存在
操作结果:插入一个元素,并且使数据个数加一(top++)
void Pop(SqStack *S)
初始条件:栈 S 已存在。
操作结果:栈中元素个数减一(top--)
}
2. 软件结构设计:
game()模块
函数原型:
void game(int map1[h][w])//游戏函数
{
#define killtime 15
clock_t start, finish;
double duration;
int x=1,y=1,m=0,n=0,M,N,MAP[100][100];//x->colom y->row
char cCtrl='\0';
cout<<" 游戏规则:"<<endl<<" w 向上,s 向下,a 向左,d 向右,q 退出"<<endl<<"
按任意键开始,方向键开始计时"<<endl;
for(M=0;M<=h-1;M++)
for(N=0;N<=w-1;N++)
MAP[M][N]=map1[M][N];
{
{
start = clock();//开始计时
while((cCtrl=getch())!='q')
{
switch(cCtrl)
{
case 'w'://向上
{ cout<<'\a';//响铃
if(y>0&&!MAP[y-1][x])
y--;
}break;
case 's'://下
{ cout<<'\a';
if(!MAP[y+1][x])
y++;
}break;
case 'a'://左
{ cout<<'\a';
if(x>0&&!MAP[y][x-1])
x--;
}break;
case 'd'://右
{ cout<<'\a';
if(!MAP[y][x+1])
x++;
}break;
}
system("cls");//刷屏
for(m=0;m<h;m++)
{
for(n=0;n<w;n++)
{
if(m==y&&n==x)
{
system("color 6");
cout<<"◎";//现实老鼠所在位置
}
else
{
if(MAP[m][n])
cout<<"■";//打印墙壁
else
{
if(m==9&&n==8)
剩余21页未读,继续阅读
资源评论
TechEmbedded
- 粉丝: 1435
- 资源: 106
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功