ImageVerifierCode 换一换
格式:DOC , 页数:31 ,大小:730.75KB ,
资源ID:9350914      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-9350914.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++课程设计迷宫小游戏.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

C++课程设计迷宫小游戏.doc

1、温馨提示程序语言:C、C+、C#、Python(红色字体 表示本课设使用的 程序设计语言)图形功能选项:Win32 控制台程序(黑框、文本界面) 、Win32 程序、MFC、WinForm、DirectX10(黑体标明 表示本课设的程序图形类别,默认为非图形界面Win32 控制台程序 )数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树) 、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(黑体标明 表示本课设使用的数据结构)C+语言项:STL 库(黑体标明 表示使用 C+的 STL 库)编译环境:Windows 7 64 位旗舰版(Linux 及其他环境请谨慎下载)集成开发

2、环境:Visual C+ 6.0、DEVC+ 、CodeBlocks 、Visual Studio 2015 均可通过编译。 (浅蓝色字体 表示需要运行修改后的版本,请用户自行选择源代码测试)分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、课设题目及预览内容 将在第二页开始展示。2、代码行数:525 行3、目录 所示内容,本文基本涵盖,如无内容,会在本页进行说明。4、附录 绝对包含用户使用手册及程序完整源代码和详细注释。5、如需下载 其他 头文件(例如 DirectX 需另行配置) ,本文会在此进行说明。6、本文撰写内容仅供学习参考,另

3、外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。题目:基于 C+控制台游戏的设计任务要求:1. 代码量不低于 300 行,至少有 5 个函数,不得存在重复代码。2. 游戏设计具有一定可玩性,设计至少 3 关,界面和交互性友好,不得存在 BUG。3. 每个人书写一份课程设计报告,报告中包含如下内容:(1) 题目简介(一段题目的简单介绍,一段题目开发的硬软要求)(2) 功能模块划分(3) 界面设计(4) 详细设计(流程图,或代码,每一部分代码要有相应的文字说明)(5) 遇到的问题及解决办法(5 个问题以上)(6) 总结与展望本课设文档基于迷宫游戏进行课程设计。运行截图

4、如下:课程设计报告课 题: 学 院: 专 业: 学生姓名: 学 号: 指导老师 : 20XX 年 XX 月 XX 日目录1 题目简介 .12 功能模块划分 .23 界面设计 .34 详细设计 .64.1 数据结构 64.2 函数说明 64.3 函数设计流程图 75 遇到的问题及解决办法 .106 总结与展望 .11附录 1211 题目简介人类建造迷宫已有 5000 年的历史。在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲、困难重重的小路吃力地行走,寻找真相。迷宫小游戏应运而生。在游戏中,迷宫被表现为寻找出口的一种益智小游戏。本课设用代表人物,代表出口,代表围墙,其他制表符(

5、例如:、等)用来构造道路和阻挡玩家的去路。玩家要在游戏中,通过复杂的道路找到出口方可胜利。本游戏一共设计 3 关,难度由低逐渐提升。本课设开发基于 Windows 7 64 位系统,集成开发环境 Visual Studio 2015 Pro。22 功能模块划分本游戏一共分为四个功能模块,分别是开始界面的显示、进行游戏、下一关和通关界面的显示。1、首先,打开程序的时候会进入一个欢迎界面,按任意键即可开始游戏。2、玩家通过 wsad 控制人物()的上下左右。3、每当玩家到达出口()会自动显示通过本关卡,并等待玩家按任意键进行下一关游戏。4、当玩家通过所有的关卡时,将会显示一个通关界面。具体的功能模

6、块图如下:开始界面进行游戏下一关通关2.1 功能模块图33 界面设计本程序完全通过文本模式进行,根据上述四大功能模块,需要设计四类用户界面,分别是开始界面,游戏界面,下一个界面,游戏结束界面。1、首先就是最基本的用户欢迎界面,也称开始界面,如下图 3.1 所示。图 3.1 开始界面2、其次,就是本程序的关键,也是这个游戏的核心所在,游戏交互界面,如下图 3.2所示。4图 3.2 游戏交互界面3、接着,就是通过本关卡之后的界面,如图 3.3 所示。图 3.3 通关界面54、最后,就是通过所有关卡的游戏界面,如图 3.4 所示。图 3.4 游戏通关界面64 详细设计4.1 数据结构该迷宫小游戏只需

7、设计一个类即可控制整个游戏的运行,通过分析,迷宫小游戏需要一个构造函数 Maze()对游戏数据进行初始化,一个显示开始界面的函数 ShowUI(),一个绘制游戏界面的函数 ShowGame(),一个初始化下一关数据的函数 NextCheckpoint(),一个控制人物移动的函数 Move(),其中通过 Rand()管理各关卡的地图数据,一个游戏结束界面函数GameOver(),还需要一个 Game()函数控制游戏的开始与结束逻辑。在整个设计中,通过二维数组来映射各种文本字符(、等) ,其中映射数据通过宏定义来实现,这样方便管理与维护。类的数据结构如下:class Maze public:Maz

8、e(); /构造函数,初始化关卡数据void ShowUI(); /显示迷宫开始界面void Game();/游戏开始void ShowGame();/显示游戏界面void GameOver();/通关所有关卡,显示游戏结束界面void Move();/移动void NextCheckpoint(); /下一关private:int mapDIMENSIONDIMENSION; /记录关卡地图int checkpoint; /记录当前关卡int x, y; /记录人物在迷宫中的坐标void Rand();/产生新地图;4.2 函数说明迷宫程序设计的函数都是类 Maze 的成员函数,分别是 Ma

9、ze()、void ShowUI()、void Game()、void ShowGame()、 void GameOver()、void Move()、void NextCheckpoint()、void Rand()。1、Maze()属于构造函数,初始化第一关的游戏数据,例如人物的 x,y 坐标,第一关的游戏地图数据等。72、ShowUI()展示欢迎进入游戏的界面。3、Game()控制游戏的进程,比如游戏开始、游戏进行中和结束的函数过程,是程序连贯的关键函数。4、ShowGame()打印游戏进行中的界面。5、GameOver() 打印游戏结束界面,并结束程序的运行。6、Move()获取键盘的

10、按键信息,控制人物在二维数组中的位置,是该游戏程序的核心函数。7、NextCheckpoint()控制当前是第几关,并可调用 Rand()对下一关的地图数据进行初始化。8、Rand()用来初始化每一个的地图信息和人物位置信息,通过 Rand()可方便关卡的增减修改,利于维护。以下是 Game()成员函数的代码,代码质量风格良好。void Maze:Game()do if (CHECKPOINT = checkpoint)GameOver(); /游戏通关else if (RAILING13 = mapyx)NextCheckpoint(); /下一关else ShowGame(); /打印迷宫

11、Move(); /移动 while (true);4.3 函数设计流程图迷宫程序设计的函数都是类 Maze 的成员函数,分别是 Maze()、void ShowUI()、void Game()、void ShowGame()、 void GameOver()、void Move()、void NextCheckpoint()、void Rand()。其中,比较核心的两个函数(Game()与 Move()函数)的程序流程图如下所示:8是否否是Game()开始判断游戏是否结束?是否进行下一关?显示迷宫界面 ShowUI()获取移动命令 Move()初始化下一关数据NextCheckpoint()G

12、ame()结束调用GameOver()图 4.3.1 Game 函数流程图9d 键a 键s 键w 键是 wsad 键非 wsad 键Move()开始获取按键信息判断 wsad 按键处理向上(w键 )移动处理向下(s 键 )移动处理向左(a 键) 移动处理向右(d 键)移动Move()结束图 4.3.2 Move 函数流程图105 遇到的问题及解决办法1、游戏开始设计的时候,不知道如何对控制台进行清屏操作,导致游戏界面比较乱。通过查阅网上资料,了解到了 system(“cls”)函数可实现控制台界面的清屏操作,这样看起来便简洁了很多。2、本程序一开始通过 cin 函数进行键盘按键的读入 ,导致游

13、戏无法连贯运行。通过查阅网上资料,_getch()函数,从键盘获取一个按键,但不回显在屏幕上,完成了游戏的实时运行操作。3、标记人物的 x,y 坐标经常与数组的行列混淆,老是出现 mapxy这样的错误。通过细心观察和总结,加深对知识的了解和运用,避免类似这样的非语法错误,养成良好的代码习惯,下面再说一次 mapyx才是正确的写法。4、游戏结束的逻辑思路一直没连贯起来,导致程序进入死循环。通过查阅相关资料,知道 exit(0)可以在代码的任何位置结束程序的运行。5、由于基础的不扎实以及考虑的不够全面,一开始在 Move()的时候只进行了小写字母wsad 按键的处理,没有处理大写的 WSAD 按键

14、,这样会导致大写的时候,无法控制游戏人物的移动。通过刻苦的学习,在 switch 里面每个的 case w:上下,再增加一行 case W:即可,这样执行同样的代码就无须再复制粘贴一遍了,或者再写一个函数解决。116 总结与展望在做这个课程设计的时候,我感觉我就像迷宫里的一样,通过解决一个个的问题,最后通过了一关关的关卡,得到了游戏的胜利。一路走来着实不易,在一次次调试奔溃中躺过,如果不是老师和同学们的指导和帮助,或许我已经放弃了前进。这次小游戏的开发,是我人生中的一次淬炼,是我迈向一名出色工程师的试炼。无数个日日夜夜的积累与奋斗在这次开发中反映的淋漓尽致,人生也像课程设计一样,不能缺少规划和

15、磨练。只有坚持奋斗,克服一个个困难,才能到达最后的终点,品味风雨后的彩虹。在此次开发设计中,我领悟了很多的道理,收获了很多以往在课堂上得不到的心得和感悟,也提高了我对 C+的兴趣,完成一件作品的成就感不言而喻。以后,我一定会好好学习,加强自己对软件开发的学习,提高自己的编程能力,成为一名出色的工程师,在 C+编程的世界大放异彩。在此,我要感谢所有帮助过我的同学和指导老师们,你们的鼓励和帮助是我成功的动力。12附录用户使用手册1、根据提示,按任意键即可开始游戏。2、根据提示,按 wsad 即可进行游戏的操作。程序源代码#include#include#include#include#define

16、 CHECKPOINT 3/第3关通关,即最后一关通关,表示总关卡数#define DIMENSION 20/迷宫地图数组大小/定义栏杆#define ACCESS 0/表示迷宫中可以走动的路#define RAILING1 1 /栏杆 #define RAILING2 2 /栏杆 #define RAILING3 3 /栏杆 #define RAILING4 4 /栏杆 #define RAILING5 5 /栏杆 #define RAILING6 6 /栏杆 #define RAILING7 7 /栏杆 #define RAILING8 8 /栏杆 #define RAILING9 9 /

17、栏杆 #define RAILING10 10/栏杆 #define RAILING11 11/栏杆 #define RAILING12 12/人物 #define RAILING13 13/出口 #define RAILING14 14/墙 using namespace std;class Maze public:13Maze(); /构造函数,初始化关卡数据void ShowUI(); /显示迷宫开始界面void Game();/游戏开始void ShowGame();/显示游戏界面void GameOver();/通关所有关卡,显示游戏结束界面void Move();/移动void N

18、extCheckpoint(); /下一关private:int mapDIMENSIONDIMENSION; /记录关卡地图int checkpoint; /记录当前关卡int x, y; /记录人物在迷宫中的坐标void Rand();/产生新地图;/主函数入口int main(void)Maze m;m.ShowUI(); /显示初始界面m.Game(); /游戏开始return 0;Maze:Maze()checkpoint = 0; /第一关Rand();system(“cls“);void Maze:ShowUI()cout 0 map-yx = RAILING12;else if

19、 (y 0 break;case s: /向下移动case S:if (y 0 mapy-x = RAILING12;else if (x 0 break;case d: /向右移动case D:if (x = CHECKPOINT)return;17Rand();system(“cls“);cout endl endl “t恭喜您第“ checkpoint “关已通关,请按任意键继续。“ endl;_getch();void Maze:Rand()int i = 0,j=0;for (i = 0; i DIMENSION; i+)for (j = 0; j DIMENSION; j+)map

20、ij = ACCESS;for (i = 0; i DIMENSION; i+) /初始化砖墙位置mapi0 = RAILING14;mapiDIMENSION - 1 = RAILING14;map0i = RAILING14;mapDIMENSION - 1i = RAILING14;switch (checkpoint) case 0: /第一关map90 = RAILING12; /人物位置map9DIMENSION - 1 = RAILING13; /出口位置x = 0; /记录人物的x,y 坐标y = 9;/ for (i = 3; i 8; i+) mapi2 = RAILING

21、2;mapi8 = RAILING2;mapi10 = RAILING2;mapi17 = RAILING2;/ for (i = 11; i 17; i+) mapi2 = RAILING2;mapi8 = RAILING2;mapi10 = RAILING2;18mapi17 = RAILING2;/ for (i = 3; i 8; i+) map2i = RAILING1;map8i = RAILING1;map10i = RAILING1;map17i = RAILING1;/ for (i = 11; i 17; i+) map2i = RAILING1;map8i = RAILI

22、NG1;map10i = RAILING1;map17i = RAILING1;/map22 = RAILING3;map102 = RAILING3;map210 = RAILING3;map1010 = RAILING3;/map82 = RAILING4;map172 = RAILING4;map810 = RAILING4;map1710 = RAILING4;/map28 = RAILING5;map108 = RAILING5;map217 = RAILING5;map1017 = RAILING5;/map88 = RAILING6;map817 = RAILING6;map17

23、8 = RAILING6;map1717 = RAILING6;break;19case 1: /第二关map80 = RAILING12; /人物位置map12DIMENSION - 1 = RAILING13; /出口位置x = 0; /记录人物的x,y 坐标y = 8;for (i = 3; i 17; i+) map1i = RAILING1;map18i = RAILING1;for (i = 2; i 18; i+)mapi2 = RAILING2;map82 = ACCESS;map12 = RAILING3;map92 = RAILING3;map152 = RAILING7;

24、map172 = RAILING7;map182 = RAILING4;for (i = 2; i 18; i+)mapi17 = RAILING2;for (i = 11; i 14; i+)mapi17 = ACCESS;map917 = ACCESS;map117 = RAILING5;map1817 = RAILING6;for (i = 3; i 5; i+) mapi4 = RAILING2;mapi11 = RAILING2;for (i = 5; i 11; i+) map2i = RAILING1;map4i = RAILING1;20map47 = RAILING9;map

25、410 = RAILING9;map24 = RAILING3;map44 = RAILING4;map211 = RAILING5;map411 = RAILING6;map68 = RAILING1;map69 = RAILING9;map57 = RAILING2;map510 = RAILING2;map67 = RAILING4;map610 = RAILING8;map79 = RAILING8;for (i = 7; i 9; i+)map7i = RAILING1;map76 = RAILING10;map74 = RAILING4;map64 = RAILING2;map66

26、 = RAILING2;map54 = RAILING3;map56 = RAILING5;map75 = RAILING1;map55 = RAILING1;map89 = RAILING2;map109 = RAILING2;map99 = RAILING8;map119 = RAILING6;map98 = RAILING1;map97 = RAILING1;map118 = RAILING1;map117 = RAILING1;map96 = RAILING3;map116 = RAILING4;map106 = RAILING2;21map93 = RAILING1;map94 =

27、RAILING5;for (i = 10; i 15; i+)mapi4 = RAILING2;map154 = RAILING6;map153 = RAILING1;map173 = RAILING1;map183 = RAILING1;map184 = RAILING10;map174 = RAILING5;map186 = RAILING10;for (i = 14; i 18; i+) mapi6 = RAILING2;mapi8 = RAILING2;map136 = RAILING3;map137 = RAILING1;map138 = RAILING9;map188 = RAIL

28、ING10;for (i = 9; i17; i+)map13i = RAILING1;map1317 = RAILING5;map710 = RAILING2;map810 = RAILING2;map910 = RAILING7;map1010 = RAILING2;map1110 = RAILING4;for (i = 11; i 17; i+) map9i = RAILING1;map11i = RAILING1;map917 = RAILING8;map1117 = RAILING6;22break;case 2: /第三关map80 = RAILING12; /人物位置map12D

29、IMENSION - 1 = RAILING13; /出口位置x = 0; /记录人物的x,y 坐标y = 8;map91 = RAILING1;map92 = RAILING8;for (i = 1; i 9; i+)mapi2 = RAILING2;map52 = ACCESS;map42 = RAILING4;map62 = RAILING3;for (i = 3; i 11; i+)map4i = RAILING1;for (i = 3; i 11; i+)map6i = RAILING1;map410 = RAILING1;map610 = RAILING1;map611 = RAI

30、LING5;map411 = RAILING6;map613 = RAILING3;map413 = RAILING4;map211 = RAILING5;for (i = 4; i 17; i+)map2i = RAILING1;map217 = RAILING5;for (i = 3; i 17; i+)mapi17 = RAILING2;map1117 = RAILING7;map1118 = RAILING1;map414 = RAILING1;23map415 = RAILING5;map614 = RAILING1;for (i = 5; i 12; i+) mapi15 = RA

31、ILING2;map615 = RAILING8;map1215 = RAILING6;for (i = 5; i 15; i+) map12i = RAILING1;map14i = RAILING1;map124 = RAILING1;map123 = RAILING1;map122 = RAILING9;map121 = RAILING1;map1415 = RAILING5;for (i = 7; i 11; i+) mapi11 = RAILING2;mapi13 = RAILING2;map1011 = RAILING6;map103 = RAILING1;map102 = RAILING4;for(i=4;i11;i+)map10i = RAILING1;map144 = RAILING3;for (i = 13; i 17; i+)mapi2 = RAILING2;map172 = RAILING4;map154 = RAILING4;for (i = 4; i 15; i+)map17i = RAILING1;map1715 = RAILING5;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报