走迷宫游戏

问题描述与需求分析

问题描述

程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。
要求:

  1. 老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;
  2. 迷宫的墙足够结实,老鼠不能穿墙而过;
  3. 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;
  4. 添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;
  5. 找出走出迷宫的所有路径,以及最短路径。
  6. 利用序列化功能实现迷宫地图文件的存盘和读出等功能

功能需求分析

  1. 迷宫地图的构建
  2. 键盘输入值的获取及实现对应的功能
  3. 结果的检测,初始位置的实现
  4. 文件的读取与保存,读取存档,修改存档
  5. 倒计时的实现

概要设计

总体设计思路

通过菜单调用不同的函数组合实现不同的功能,将各个功能需求单独以一个函数实现,在实现复杂功能时,使用不同的函数进行组合,通过合理的调用实现所有的功能。
整体流程图

模块简介

本程序主要分为3个功能模块,一个执行模块,还有几个服务支持模块。

主要功能模块为:

1、 随机地图生成
2、 存档地图的修改
3、 存档地图的编辑

执行模块为:

游戏的运行 地图的打印

服务支持模块为:

1、 文件的读取与保存
2、 设备输入值的获取(接收按键)
3、 坐标的移动(老鼠的移动)
4、 光标输入符的隐藏
5、 倒计时的实现
6、 地图编辑模块
7、 随机数生成模块与地图初始化模块

详细设计

数据结构设计

迷宫地图的存储使用二维数组实现,在数组中使用1表示迷宫的墙,使用0表示道路;文件信息的存取,使用结构体实现,其他常用的全局量,使用#define进行数据类型定义。

1
2
int map[Height + 2][Width + 2];   //存储地图数据
struct _finddata_t fileinfo; //存储文件信息

算法分析与实现

程序主要函数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
		/*执行模块函数*/
void paint(int x, int y); //画迷宫
void paint2();
void start(); //游戏开始
int edit_map_read(); //修改地图读取存档

/*服务支持模块类函数*/
int countdown(); //倒计时
void gotoxy(int x, int y); //移动坐标
void hidden(); //光标隐藏
int file_list_reading(); //文件列表读取
void create(int x, int y); //随机数组生成
void map_Initialization(); //地图初始化
int file_write(); /*文件读写*/
int file_read();
int get_key(); //接收按键
void game(); //游戏运行
void edit_map(); //地图编辑
int edit_map_read(); //修改地图读取存档

/*功能模块类函数,菜单直接调用,多为函数组合*/
void Random_map_generation(); //随机地图
void Read_archive_map(); //读取存档
void Map_editing(); //地图编辑

主要功能函数实现流程图:

void create(int x, int y);函数作用:生成随机数组

void map_Initialization();函数作用:通过调用create(int x, int y)生成的随机数组,初始化地图,并存储在map数组中

void paint(int x, int y); void paint2();函数作用:打印地图

int file_read();函数功能:读取存档。类似函数:void Read_archive_map();

int file_write();函数功能:写入存档,保存地图。

void edit_map(); 函数功能:编辑地图。

void game(); 函数功能:游戏执行。

int file_list_reading();函数功能:读取文件列表,显示在屏幕上。

运行结果和调试分析

程序主界面:

生成随机地图并保存

游戏运行地图:

存档地图读取

修改存档地图:

总结体会

  本次课程设计,巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力;培养了我上网查找资料,查阅手册及文献资料的能力;培养独立思考,深入研究,分析问题、解决问题的能力。
  通过实际编译系统的分析设计、编程调试,在文件的存档读取时遇到了严重的问题,查阅了各种资料,大概在一天后解决问题。

根据我在实习中遇到得问题,我将在以后的学习过程中注意以下几点:
1、认真上好专业实验课,多在实践中锻炼自己。
2、写程序的过程中要考虑周到,严密。
3、在做设计的时候要有信心,有耐心,切勿浮躁。
4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。
5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。

参考文献

1严蔚敏,吴伟民编著.《数据结构》(C语言版).清华大学出版社。
2 http://blog.csdn.net/cflys/article/details/45895737
3 http://blog.csdn.net/cflys/article/details/45895737
4 http://blog.csdn.net/AllenLee1993/article/details/44814919
5 http://blog.csdn.net/hanhailong18/article/details/16907295
6 http://codebus.easyx.cn/krissi/post/maze-game

点击:下载源码

0%