网站首页 > 技术教程 正文
导语
月初更波python制作小游戏系列吧用python写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧
小伙利用Python自制一个推箱子小游戏!
开发工具
Python版本:3.6.4
相关模块:pygame模块;以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
实现效果
在cmd窗口运行"Game12.py"文件即可。
效果如下:
原理简介
游戏简介(来源:百度百科):
经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。
控制方式:
↑↓←→键控制人物行动,r键重新开始本关。
逐步实现:
Step1:定义游戏精灵类
由于游戏涉及到碰撞检测,所以我们先来定义一些游戏精灵类,包括推箱子的人、箱子、墙和目标位置指示标记。
首先我们来定义一下推箱子的人这个精灵类:
他需要拥有可以移动的能力,这里设置了一个模拟移动的选项,是为了通过模拟移动判断他是否可以向上/下/左/右移动。
因为地图上的其他东西性质类似,所以我们把它们定义成同一个精灵类(T_T其实性质都类似,但是感觉还是有必要区分一下人和物的):
其中箱子需要拥有可以移动的能力,其他则不能移动。模拟移动选项的功能与之前类似。
Step2:定义游戏地图类
这里我们定义一个游戏地图类,目的是用该类来创建任意的游戏地图。因此,该类应当可以增加并保存游戏元素(人、墙、箱子等),并在屏幕上把地图画出来。同时也应当自带一个方法来判断此地图上的箱子是否都已经送到了指定位置(这样子方便切换关卡):
Step3:定义游戏界面类
游戏界面类负责解析levels文件夹下的游戏各关卡的地图文件,并利用游戏地图类创建并显示游戏地图:
同时因为游戏地图面积>游戏窗口界面, 所以该类需要增加根据人物位置滚动游戏地图的功能:
Step4:定义某关的游戏主循环
主循环主要负责实例化游戏界面类,并根据按键检测的结果对游戏界面类进行一些操作:
其中人物移动的逻辑为:
人移动的目标位置为空白格,则人移动;若撞到箱子,箱子可以和人方向一样移动一格,则人和箱子均移动;其他情况人和箱子均无法移动。
Step5:定义游戏开始、切换和结束界面
做的比较简陋,直接给源码吧。
开始界面:
切换界面:
结束界面:
Step6:实现游戏主函数
把所有界面串起来就好啦:
随手加了个背景音乐,应该问题不大吧T_T。
好啦,本文分享就到这里啦,更多python学习可以关注我们哦!
- 上一篇: 一款二次元美少女收集推箱子游戏 二次元收集类手机游戏
- 下一篇: 推箱子游戏,解答 推箱子游戏解题程序
猜你喜欢
- 2024-09-29 益智小游戏《欢乐推箱子》第19关通关策略图文解析
- 2024-09-29 C语言游戏开发项目-推箱子,零基础也能学会
- 2024-09-29 《迷宫强盗》:一起来推箱子了 请问迷宫
- 2024-09-29 如何使用C语言编程实现一个推箱子游戏?技术核心和算法实现
- 2024-09-29 手游|萌萌的上古文明教你怎么玩“推箱子”!
- 2024-09-29 小伙利用C++打造推箱子游戏,成功拿到Offer
- 2024-09-29 推箱子游戏,解答 推箱子游戏解题程序
- 2024-09-29 一款二次元美少女收集推箱子游戏 二次元收集类手机游戏
- 2024-09-29 《推箱子》的后现代主义重构 《糖果包》评测
- 2024-09-29 C++学习之项目推箱子游戏 推箱子c语言程序
你 发表评论:
欢迎- 05-1613步震撼淘宝大促闪光裂纹破墙立体字PS制作教程
- 05-16AI教程 | 绘制扁平的萌萌哒图标
- 05-160基础学平面设计所需了解的基础常识汇总
- 05-16自学平面设计需要多长时间?十六年职业设计总监告诉你
- 05-16平面设计都要学习哪些内容?
- 05-16李涛PS教程 高手之路PS教程 合成教程 —制作一个小星球
- 05-16Illustrator实例教程:制作炫酷的漩涡效果
- 05-16Illustrator实例教程:利用混合工具制作一朵炫酷的花
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)