经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。
本系统是一个基于MFC的单文档程序,具备一般推箱子游戏的基本功能,而且加入了地图编辑功能,可以让用户自己编辑地图并且在自己编辑的地图中游戏,大大增加了游戏的可玩性。系统还提供了简单的死局判断,当用户无论如何都无法完成该局时,弹出提示框,提示用户已经是死局。
利用VC6.0开发工具来开发这个系统。使用了MFC和GDI来绘制图像,使界面更加美观,游戏更加容易上手。
关键词
栈;队列;vc6.0基于MFC的单文档窗口,响应键盘按键消息来移动游戏中人物并且实时绘制到界面。支持地图编辑,并保存到info文件中。
打开vc6.0,新建一个项目。选择MFC AppWizard(exe),然后选择基于单文档的窗口。编译器会自动生成一个单文档的窗口程序。这个就是游戏的主界面。
编写一个Sokoban类。所有的游戏操作都封装在这个类里面。可以理解为游戏对象。而主界面是游戏对象的载体。一个推箱子游戏,需要有几个基本的功能:绘制游戏区域、响应键盘消息来改变游戏界面、更改地图(过关了)、编辑地图后添加新地图。
3.2.2.1 绘制游戏区域
绘制游戏区域还应该细分为绘制背景部分、绘制墙、绘制目标地点、绘制人物、绘制箱子、绘制已经放在目标地点的箱子、绘制通道、绘制人物在目标地点上。以上情况每一种都应该单独编写一个函数。
3.2.2.2 响应键盘消息
推箱子游戏只需要响应方向键上、下、左、右。就可以了。如果有兴趣,还可以响应一些快捷键。比如:r键可以重新开始当前游戏等
3.2.2.3 更改地图(过关了)
当游戏完成时,只需要重新加载下一个地图就可以了。
3.2.2.4 添加新地图
当添加新地图成功后,需要把添加地图成功的消息传给Sokoban类,然后Sokoban类将内部的地图总数计数加1,这样就完成了动态添加新地图功能。
MapEdit类是一个地图编辑类。和Sokoban类比较相似。因为地图编辑也是可视的,所以MapEdit类也需要绘制游戏区域,还需要保存当前绘制的地图。
3.2.3.1 绘制游戏区域
绘制游戏区域还应该细分为绘制背景部分、绘制墙、绘制目标地点、绘制人物、绘制箱子、绘制已经放在目标地点的箱子、绘制通道、绘制人物在目标地点上。以上情况每一种都应该单独编写一个函数。
3.2.3.2 保存当前绘制的地图
将有用绘制的地图保存到info文件中。如果保存成功,要把消息发送给Sokoban类,让其内部的地图总数计数加1,这样就完成了动态添加新地图功能。
1:具备一般推箱子游戏的基本功能
2:需要加入地图编辑器功能
3:需要加入死局判断功能(无论如何操作都无法完成游戏时,给予提示)
成品毕业设计 可以根据自己的要求, 自行浏览选购, 可以参考是否符合自己要求,找到满意的成品毕业设计 , 直接发送成品编号联系发你网址的工作人员进行交易, 我们会从QQ或者邮箱等方式发送毕业设计程序。
我们团队 , 可以根据用户的功能要求量 身定制毕业设计程序 (同样联系发你网址的 工作人员) , 需要用户提供详细的 , 功能要 求.开发技术要求(开发语言、开发工具、框 架等 ) . 我们会根据用户毕业设计的难易程 度 , 工作量大小等, 具体的给出一个报价,价格 协商一致过后,付下40%定金.我们开始开 发毕业设计, 做好过后先发送设计桌面演示录像 , 用户看后 满意付尾款, 我们再发程序源码压缩包!