欢迎来到天天文库
浏览记录
ID:9058324
大小:403.21 KB
页数:10页
时间:2018-04-16
《推箱子游戏实习报告书》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、数据结构与C语言综合训练实习报告信息工程学院数据结构与C语言综合训练报告(2012~2013学年第二学期)报告题目:____推箱子的最短路径___姓名:___程榜____专业:软件工程年级班级:___2012级2班___指导教师:刘全中完成日期:2013年7月21号数据结构与C语言综合训练实习报告一、综合训练目的和要求本综合训练是计算机科学与技术、信息管理与信息系统、软件工程、电子商务专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》、《数据结构》课程后进行的一次全面的综合练习。本课综合训练的目的和任务:1.巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌
2、握2.掌握C语言编程和程序调试的基本技能3.利用C语言进行基本的软件设计4.掌握书写程序设计说明文档的能力5.提高运用C语言、数据结构解决实际问题的能力二、综合训练任务内容1.题目要求:推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个5×5的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,因此如果箱子被推到一个角上那么箱子就不能再被移动了,如果箱子被推到一面墙上,那么箱子只能沿着墙移动.同时,房间里头还有若干障碍物(用阴影部分表示)。现在给定房间的结构,箱子的位置,搬运工的位置和箱子要被推去的位置,请你计算出搬
3、运工至少要推动箱子多少格.2.扩展实现的内容:绘制图形界面,通过按钮实现推箱子的整个过程,整个过程中可以动态的看到箱子的移动。游戏界面如下图:8数据结构与C语言综合训练实习报告游戏动态移动的过程图如下:8数据结构与C语言综合训练实习报告三、总体设计所用算法主要是根据广度优先搜索,纪录路径,然后利用回溯法实现最短路径的查找并纪录保存下来。所用的数据结构主要为顺序结构。返回开始界面进行游戏开始开始进入游戏界面进行选择选择游戏开始,进行游戏选择游戏说明,了解游戏规则选择关卡,或者返回游戏开始关卡(1)关卡(2)关卡(3)按空格键进行游戏返回游戏开始后,可以单机鼠标右键退出游戏返回游
4、戏开始,单机鼠标右键可以退出游戏8数据结构与C语言综合训练实习报告四、详细设计说明1、推箱子游戏具有的功能(1)能够显示主菜单和界面游戏需要提供主菜单进行选择,同时能够把地图文件中的信息转换成为图像显示到游戏界面上。(2)能够实现键盘操作功能能够接收到空格键信息,按照软件内部实现的箱子移动到相应的位置。(3)能够进行关卡选择功能进入开始游戏的界面时,可以进行游戏的关卡的选择,然后利用空格键进行箱子的移动。(4)提供游戏说明功能进入游戏说明界面时,可以了解游戏的一些规则,及如何进行游戏。2、程序结构设计运用C++语言,以及VS2010开发环境(1)、typedefstructP
5、node{introw;intcol;intweight;structPnode*back_man;}Pnode,*Position;某一点的坐标表示,当用来实现箱子的最短路径的搜索时,back_man用来存储箱子移动一个位置后,人所在的位置。(2)、typedefstructMnode{intmrow;intmcol;charmaze[MAX_ROW][MAX_COL];}MNode,*MazeType;用来存储地图的信息8数据结构与C语言综合训练实习报告(3)、算法的实现主要有两个类,第一个类是classShortestPath;第二个类是classManBoxStep:
6、publicShortestPath;A、第一个类classShortestPath是用来实现地图中任意两点之间的最短路径,成员函数及其功能如下:PositionNextPosition(Position&curpos,intdi);用来计算当前点在四个方向下的移动一格得到的下一点的坐标位置,并返回;boolCanArrive(vector>&vec);数据成员有start,end,此函数是判断在地图中能否从start到end,并利用广度优先搜索搜索从start到end的路径,并把所有搜索过的位置全部记录在顺序容器vec中,vec[i]表示存储一
7、系列与start位置相距i个格子的被搜索的点的位置;voidRecordWay(vector>&vec,vector&way);此函数根据vec中所存储的数据,利用回溯法进行往回搜索,找到从start到end的最短路径,并把路径存到容器way中;B、第二个类classManBoxStep是利用第一个类中的函数实现人和箱子一起从起点到箱子应到的位置的最短路径,其中的成员函数及其功能如下:PositionNextState(Positionbox,intdi
此文档下载收益归作者所有