详情

vc0284 基于VC的推箱子游戏设计

项目介绍

内 容 摘 要

经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。

本系统是一个基于MFC的单文档程序,具备一般推箱子游戏的基本功能,而且加入了地图编辑功能,可以让用户自己编辑地图并且在自己编辑的地图中游戏,大大增加了游戏的可玩性。系统还提供了简单的死局判断,当用户无论如何都无法完成该局时,弹出提示框,提示用户已经是死局。

利用VC6.0开发工具来开发这个系统。使用了MFCGDI来绘制图像,使界面更加美观,游戏更加容易上手。

关键词

栈;队列;vc6.0

3.1 系统总体设计

       基于MFC的单文档窗口,响应键盘按键消息来移动游戏中人物并且实时绘制到界面。支持地图编辑,并保存到info文件中。

3.2 系统概要设计

3.2.1 界面

       打开vc6.0,新建一个项目。选择MFC AppWizard(exe),然后选择基于单文档的窗口。编译器会自动生成一个单文档的窗口程序。这个就是游戏的主界面。

3.2.2 Sokoban

       编写一个Sokoban类。所有的游戏操作都封装在这个类里面。可以理解为游戏对象。而主界面是游戏对象的载体。一个推箱子游戏,需要有几个基本的功能:绘制游戏区域、响应键盘消息来改变游戏界面、更改地图(过关了)、编辑地图后添加新地图。

3.2.2.1 绘制游戏区域

       绘制游戏区域还应该细分为绘制背景部分、绘制墙、绘制目标地点、绘制人物、绘制箱子、绘制已经放在目标地点的箱子、绘制通道、绘制人物在目标地点上。以上情况每一种都应该单独编写一个函数。

3.2.2.2 响应键盘消息

       推箱子游戏只需要响应方向键上、下、左、右。就可以了。如果有兴趣,还可以响应一些快捷键。比如:r键可以重新开始当前游戏等

3.2.2.3 更改地图(过关了)

       当游戏完成时,只需要重新加载下一个地图就可以了。

3.2.2.4 添加新地图

       当添加新地图成功后,需要把添加地图成功的消息传给Sokoban类,然后Sokoban类将内部的地图总数计数加1,这样就完成了动态添加新地图功能。

3.2.3 MapEdit

       MapEdit类是一个地图编辑类。和Sokoban类比较相似。因为地图编辑也是可视的,所以MapEdit类也需要绘制游戏区域,还需要保存当前绘制的地图。

3.2.3.1 绘制游戏区域

绘制游戏区域还应该细分为绘制背景部分、绘制墙、绘制目标地点、绘制人物、绘制箱子、绘制已经放在目标地点的箱子、绘制通道、绘制人物在目标地点上。以上情况每一种都应该单独编写一个函数。

3.2.3.2 保存当前绘制的地图

       将有用绘制的地图保存到info文件中。如果保存成功,要把消息发送给Sokoban类,让其内部的地图总数计数加1,这样就完成了动态添加新地图功能。

3.4设计要求

1:具备一般推箱子游戏的基本功能       

2:需要加入地图编辑器功能         

3:需要加入死局判断功能(无论如何操作都无法完成游戏时,给予提示)

站长说明

       成品毕业设计 可以根据自己的要求, 自行浏览选购, 可以参考是否符合自己要求,找到满意的成品毕业设计 , 直接发送成品编号联系发你网址的工作人员进行交易,  我们会从QQ或者邮箱等方式发送毕业设计程序。

        我们团队 , 可以根据用户的功能要求量 身定制毕业设计程序 (同样联系发你网址的 工作人员) ,  需要用户提供详细的   , 功能要 求.开发技术要求(开发语言、开发工具、框 架等  ) . 我们会根据用户毕业设计的难易程 度 , 工作量大小等, 具体的给出一个报价,价格 协商一致过后,付下40%定金.我们开始开 发毕业设计, 做好过后先发送设计桌面演示录像 , 用户看后 满意付尾款, 我们再发程序源码压缩包!