相关文档推箱子游戏素材3D场景,关注微信公众号“Python学习指南”,在公众号回复推箱子即可获取。 游戏图片及音频资料来源于网络推箱子游戏素材,侵扰请见谅。 开发工具Python版本:3.6.4 相关模块:pygame模块; 以及 Python 自带的一些模块。 环境设置安装Python并添加到环境变量中,pip安装需要的相关模块。 原理介绍 游戏介绍(来源:百度百科): 经典推箱子是一款来自日本的古老游戏,目的是训练你的逻辑思维能力。 在小型仓库中游戏素材,需要将木箱放在指定位置。 一不小心,箱子将无法移动或通道将被阻塞。 因此,需要巧妙地利用有限的空间和通道,合理安排移动次序。 和位置,以便顺利完成任务。 控制方式:↑↓←→键控制角色动作,r键重启关卡。 分步实现: Step1:定义游戏精灵类 由于游戏涉及到碰撞检测,我们先定义一些游戏精灵类,包括推箱子的人、箱子、墙和目标位置指示器。 首先我们定义一下推箱子的精灵类:他需要有移动的能力。 这里设置一个模拟移动选项,判断他是否可以通过模拟移动进行上下左右移动。 因为地图上的其他东西本质上是相似的,所以我们把它们定义为同一个精灵类(T_T其实本质上也是相似的,但是还是要区分人和物):其中,boxes需要有能力动,别人动不了。
Simulate Move 选项的功能与以前类似。 Step2:定义游戏地图类这里我们定义一个游戏地图类,目的是使用这个类来创建任何游戏地图。 因此,这个类应该能够添加和保存游戏元素(人、墙、盒子等),并在屏幕上绘制地图。 同时,还应该自带判断这张地图上的箱子是否已经送到指定位置的方法(这样方便切换关卡): Step3:定义游戏界面类游戏界面类负责解析levels文件夹File下游戏各关卡的地图,使用游戏地图类创建和显示游戏地图:同时由于游戏地图面积大于游戏窗口界面,该类需要添加根据角色位置滚动游戏地图的功能: Step4: 定义某个关卡的游戏主循环 主循环主要负责实例化游戏界面类,并根据游戏界面类进行一些操作到按钮检测结果:人物移动的逻辑是:人物移动的目标位置是空白,人物移动; 如果撞到箱子,箱子可以和人同方向移动 如果同时移动一个空间,人和箱子都会移动; 在其他情况下,人和盒子都不能移动。 Step5:定义游戏开始、切换、结束接口比较简单,直接给出源码即可。 开始界面: 切换界面: 结束界面: Step6:实现游戏主要功能,连接所有界面: All Done! 有关完整的源代码,请参阅相关文档。