基于 Python 制作推箱子小游戏
导语
月初更波 python 制作小游戏系列吧~用 python 写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧~
开发工具
Python 版本:3.6.4
相关模块:
pygame 模块;
以及一些 Python 自带的模块。
环境搭建
安装 Python 并添加到环境变量,pip 安装需要的相关模块即可。
先睹为快
在 cmd 窗口运行" Game12.py "文件即可。
效果如下:
原理简介
游戏简介(来源:百度百科):
经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。
控制方式:
↑↓←→ 键 控制人物行动, r 键 重新开始本关。
逐步实现:
Step1:定义游戏精灵类
由于游戏涉及到碰撞检测,所以我们先来定义一些游戏精灵类,包括推箱子的人、箱子、墙和目标位置指示标记。
首先我们来定义一下推箱子的人这个精灵类:
他需要拥有可以移动的能力,这里设置了一个模拟移动的选项,是为了通过模拟移动判断他是否可以向上/下/左/右移动。
因为地图上的其他东西性质类似,所以我们把它们定义成同一个精灵类(T_T 其实性质都类似,但是感觉还是有必要区分一下人和物的):
其中箱子需要拥有可以移动的能力,其他则不能移动。模拟移动选项的功能与之前类似。
Step2:定义游戏地图类
这里我们定义一个游戏地图类,目的是用该类来创建任意的游戏地图。因此,该类应当可以增加并保存游戏元素(人、墙、箱子等),并在屏幕上把地图画出来。同时也应当自带一个方法来判断此地图上的箱子是否都已经送到了指定位置(这样子方便切换关卡):
Step3:定义游戏界面类
游戏界面类负责解析 levels 文件夹下的游戏各关卡的地图文件,并利用游戏地图类创建并显示游戏地图:
同时因为游戏地图面积 > 游戏窗口界面, 所以该类需要增加根据人物位置滚动游戏地图的功能:
Step4:定义某关的游戏主循环
主循环主要负责实例化游戏界面类,并根据按键检测的结果对游戏界面类进行一些操作:
其中人物移动的逻辑为:
人移动的目标位置为空白格,则人移动;若撞到箱子,箱子可以和人方向一样移动一格,则人和箱子均移动;其他情况人和箱子均无法移动。
Step5:定义游戏开始、切换和结束界面
做的比较简陋,直接给源码吧。
开始界面:
结束界面:
Step6:实现游戏主函数
把所有界面串起来就好啦:
参考文献
- 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
- 基于WEB的爬虫系统的设计与实现(西安电子科技大学·卢哲辉)
- 基于.NET自定义控件的社区网站系统研究与实现(武汉理工大学·刘亚)
- 商务活动开发平台的设计与实现(华中科技大学·罗洋)
- 面向服务的旅游资源管理系统的设计与实现(黑龙江大学·于旭)
- 基于数据挖掘的电子商务推荐系统设计与实现(吉林大学·陈凤桃)
- 网络流量统计分析系统(吉林大学·石景龙)
- 基于数据挖掘的电子商务推荐系统设计与实现(吉林大学·陈凤桃)
- 基于轻量级J2EE的网络游戏虚拟物品交易系统的设计与实现(北京邮电大学·曹鹃)
- 旅游服务网的设计与实现(电子科技大学·赵洋)
- 基于轻量级J2EE的网络游戏虚拟物品交易系统的设计与实现(北京邮电大学·曹鹃)
- 基于用户兴趣的手机终端视频推荐系统(大连理工大学·付红升)
- 基于Android系统的139邮箱的设计与开发(山东大学·孙国臣)
- 网络游戏虚拟物品交易系统设计与实现(吉林大学·李云峰)
- 可定制电子商务系统的设计与实现(电子科技大学·薛健)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设项目助手 ,原文地址:https://bishedaima.com/yuanma/36051.html