- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信息工程学院
数据结构与C语言综合训练报告
(2012~2013学年第 二学期)
报告题目:____推箱子的最短路径_ __
姓 名:_ __ 程 榜____
专 业: 软件工程
年级班级:___2012级2班___
指导教师: 刘全中
完成日期: 2013年7月21号
一、综合训练目的和要求
本综合训练是计算机科学与技术、信息管理与信息系统、软件工程、电子商务专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》、《数据结构》课程后进行的一次全面的综合练习。本课综合训练的目的和任务:
1. 巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握
2. 掌握C语言编程和程序调试的基本技能
3. 利用C语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5. 提高运用C语言、数据结构解决实际问题的能力
二、综合训练任务内容
1.题目要求:
推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,因此如果箱子被推到一个角上那么箱子就不能再被移动了,如果箱子被推到一面墙上,那么箱子只能沿着墙移动.现在给定房间的结构,箱子的位置,搬运工的位置和箱子要被推去的位置,请你计算出搬运工至少要推动箱子多少格.
四、详细设计说明
1、推箱子游戏具有的功能
(1)能够显示主菜单和界面
游戏需要提供主菜单进行选择,同时能够把地图文件中的信息转换成为图像 显示到游戏界面上。
(2)能够实现键盘操作功能
能够接收到空格键信息,按照软件内部实现的箱子移动到相应的位置。
能够进行关卡选择功能
进入开始游戏的界面时,可以进行游戏的关卡的选择,然后利用空格键进行箱子的移动。
提供游戏说明功能
进入游戏说明界面时,可以了解游戏的一些规则,及如何进行游戏。
程序结构设计
运用C++语言,以及VS2010开发环境
(1)、typedef struct Pnode{
int row;
int col;
int weight;
struct Pnode* back_man;
}Pnode, * Position;
某一点的坐标表示,当用来实现箱子的最短路径的有哪些信誉好的足球投注网站时,back_man 用来存储箱子移动一个位置后,人所在的位置。
(2)、typedef struct Mnode{
int mrow;
int mcol;
char maze[MAX_ROW][MAX_COL];
}MNode, *MazeType;
用来存储地图的信息
、算法的实现
主要有两个类,第一个类是class ShortestPath ;
第二个类是class ManBoxStep: public ShortestPath ;
A、第一个类class ShortestPath 是用来实现地图中任意两点之间的最短路径,成员函数及其功能如下:
Position NextPosition(Position curpos, int di);
用来计算当前点在四个方向下的移动一格得到的下一点的坐标位置,并返回;
bool CanArrive( vector listPosition vec);
数据成员有start,end,此函数是判断在地图中能否从 start 到 end ,并利用广度优先有哪些信誉好的足球投注网站有哪些信誉好的足球投注网站从start 到end 的路径,并把所有有哪些信誉好的足球投注网站过的位置全部记录在顺序容器 vec 中,vec[i] 表示存储一系列与start 位置相距i 个格子的被有哪些信誉好的足球投注网站的点的位置;
void RecordWay( vector listPosition vec, vectorPosition way);
此函数根据 vec 中所存储的数据,利用回溯法进行往回有哪些信誉好的足球投注网站,找到从 start 到 end 的最短路径, 并把路径存到容器 way 中;
B、第二个类class ManBoxStep 是利用第一个类中的函数实现人和箱子一起从起点到箱子应到的位置的最短路径,其中的成员函数及其功能如下:
Position NextState(Position box, int di);
此函数的功能是纪录当人能够移动箱子的情况下,纪录移动后箱子和人的位置;
MazeType UpdateMaze(MazeType mymaze, Position curpos, Position newpos);
此函数的功能是每当在有哪些信誉好的足球投注网站下一步时,及时的更新所在的地图(即改变人和箱子的位置),并每次都将地图纪录下来;
bool BFSCanArrive( vector listPosi
文档评论(0)