原标题:python写的推箱子小游戏

导语

Python 功能强大,可以写爬虫、服务器、数据分析、AI……当然,也可以写游戏。

用python写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧~

相关文件

源代码代码&素材&可执行文件:

https://github.com/CharlesPikachu/Games/tree/master/Game12

游戏图片与音频素材源于网络,未用于商业用途,如有侵权请联系删除。

Python版本:3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

先睹为快

在cmd窗口运行" python Game12.py"文件即可。

效果如下:

原理简介

游戏简介(来源:百度百科):

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

控制方式:

↑↓←→键控制人物行动, r键重新开始本关。

逐步实现:

Step1:定义游戏精灵类

由于游戏涉及到碰撞检测,所以我们先来定义一些游戏精灵类,包括推箱子的人、箱子、墙和目标位置指示标记。

首先我们来定义一下推箱子的人这个精灵类:

他需要拥有可以移动的能力,这里设置了一个模拟移动的选项,是为了通过模拟移动判断他是否可以向上/下/左/右移动。

因为地图上的其他东西性质类似,所以我们把它们定义成同一个精灵类(T_T其实性质都类似,但是感觉还是有必要区分一下人和物的):

其中箱子需要拥有可以移动的能力,其他则不能移动。模拟移动选项的功能与之前类似。

Step2:定义游戏地图类

这里我们定义一个游戏地图类,目的是用该类来创建任意的游戏地图。因此,该类应当可以增加并保存游戏元素(人、墙、箱子等),并在屏幕上把地图画出来。同时也应当自带一个方法来判断此地图上的箱子是否都已经送到了指定位置(这样子方便切换关卡):

Step3:定义游戏界面类

游戏界面类负责解析levels文件夹下的游戏各关卡的地图文件,并利用游戏地图类创建并显示游戏地图:

同时因为游戏地图面积>游戏窗口界面, 所以该类需要增加根据人物位置滚动游戏地图的功能:

Step4:定义某关的游戏主循环

主循环主要负责实例化游戏界面类,并根据按键检测的结果对游戏界面类进行一些操作:

其中人物移动的逻辑为:

人移动的目标位置为空白格,则人移动;若撞到箱子,箱子可以和人方向一样移动一格,则人和箱子均移动;其他情况人和箱子均无法移动。

Step5:定义游戏开始、切换和结束界面

做的比较简陋,直接给源码吧。

开始界面:

切换界面:

结束界面:

Step6:实现游戏主函数

把所有界面串起来就好啦:

随手加了个背景音乐,应该问题不大吧T_T。

All Done!完整源代码详见相关文件。

https://github.com/CharlesPikachu/Games/tree/master/Game12

本系列文章相关文件中均提供了打包好的版本,无需环境搭建即可运行玩耍~

作者:白露未晞me

出处:Charles的皮卡丘

100行Python代码的魔性声控游戏 返回搜狐,查看更多

责任编辑:

python写推箱子_python写的推箱子小游戏相关推荐

  1. python井字棋_python实现井字棋小游戏

    本文为大家分享了python实现井字棋小游戏,供大家参考,具体内容如下 周五晚上上了python的选修课,本来以为老师是从python的基础语法开始的,没想到是从turtle画图开始,正好补上了我以前 ...

  2. [python] 写个既有趣又可爱的弹球小游戏

    用python写一个既有趣有可爱的弹球小游戏 这几天闲着无聊,就在家写着游戏玩一玩,发现一个这样有趣的小游戏,我通过pygame把它先做了出来,话不多少先上代码. 首先先导入包,导包是必不可少的一件事 ...

  3. Python版基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式

    基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式 按空格进入单人模式,按't'进入双人模式,双人模式下玛丽1采用空格键上跳,玛丽2采用方向上键上跳. 完整代码下载地址:Pyth ...

  4. python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

    python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...

  5. python写了代码_Python写代码的用法建议

    1.Mutable and immutable types Python有两种内置或用户定义的类型 可变类型是允许就地修改内容的类型.典型的可变列表是列表和词典:所有列表都有变异方法,如 list.a ...

  6. python websocket实现消息推送_Python Websocket消息推送---GoEasy

    Goeasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!个人感觉goeasy推送更稳定,推送 速度快,代码简单易懂上手快 浏览器兼容性:GoEasy推送 支持websocket ...

  7. python抢红包random实现_python写红包的原理流程包含random,lambda其中的使用和见简单介绍...

    Python写红包的原理流程 首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机 ...

  8. python画圆形螺旋线_Python写的弹球小游戏

    Python 的功能强大应用广泛,从爬虫到 Web 开发,从科学计算到人工智能,都能见到它的身影.当然,Python 还可以编写游戏代码,虽然不是主流,但却十分有趣,既能提升代码能力,又能自娱自乐.敲 ...

  9. python可以用来写什么工具_python写工具

    谷歌开源 Python Fire:可自动生成命令行接口 今天我们很高兴地宣布 Python Fire 开源.Python Fire 可从任何 Python 代码生成命令行接口(command line ...

最新文章

  1. (仿头条APP项目)5.列表页面设计实现
  2. LinkedList总结+数组栈Stack
  3. Exception in thread main java.lang.NoSuchMethodError: scala.Predef$
  4. Matlab | 数字信号处理:双线性变换法设计IIR数字滤波器
  5. idea启动tomcat没有加载项目_震惊!我三步就搞定了 Tomcat 源码环境搭建!
  6. 关于未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值的解决方法...
  7. js读取http chunk流_极简 Node.js入门 教程双工流
  8. 2017web前端面试总结
  9. 程序性能之显示大表格
  10. 云服务器怎么安装声音驱动_GPU云服务器如何安装NVIDIA Tesla驱动
  11. 为【桌面右键菜单 - 新建文档】添加快捷键
  12. 一个小实验告诉你,内存速度到底比硬盘快多少!!!
  13. Python :文本数据挖掘并绘制词云图
  14. 我的ubuntu论坛账号
  15. 24券的“天才”创始人如何打坏一手好牌(转载)
  16. 技术人的充电时刻,200分钟QA交流,尽在SDCC 2017·深圳站
  17. 渗透测试的8个步骤—转载
  18. php 中margin-top,margin-top是什么意思-css编程词典-php中文网
  19. h5 神策埋点_数据分析(一)埋点
  20. android仿qq折叠,android列表收缩与展开仿QQ好友列表(非常详细,附源码)

热门文章

  1. 网站服务器年费属于什么费用,云服务器属于什么费用
  2. cmd for 遍历目录_DOS 遍历目录及子目录,删除特定名称文件夹或文件
  3. seata不支持MySQL8.x正确解决方案
  4. ac9260网卡linux,AC9260无线网卡 速度高达1.73Gbps
  5. 十分钟使用苹果机器学习框架CoreML进行图片识别(Swift版)
  6. 如何修改CAD图中的一些块颜色?
  7. 计算机表格最高分,excel表格怎样求最高分
  8. Vista召唤:让暴风播放音量更猛烈些吧
  9. Kali学习 | 漏洞扫描:3.2 使用Nessus扫描漏洞
  10. AJE AI论文自动润色