制作cmd小游戏_小伙利用Python自制一个推箱子小游戏!

导语

月初更波python制作小游戏系列吧用python写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧

小伙利用Python自制一个推箱子小游戏!

开发工具

Python版本:3.6.4

相关模块:pygame模块;以及一些Python自带的模块。

环境搭建

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

实现效果

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

效果如下:

6074e6d5278ffdf7301f0858f41ad79f.png
37252b895daf01b9a7a86f96313ba122.png

原理简介

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

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

控制方式:

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

逐步实现:

Step1:定义游戏精灵类

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

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

0985cdae7f8048bcadeb211803262e96.png

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

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

9056348f8c694f89bb62eea45b8f430e.png

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

Step2:定义游戏地图类

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

05b86a503f8c4214bd76900dd77db291.png

Step3:定义游戏界面类

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

e7c6914040ce5626ddbcaa0bfdc5508b.png

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

47776372d29b21c1a130b92af92163f9.png

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

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

c7602eb7f3dea57c09818924fbc64251.png

其中人物移动的逻辑为:

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

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

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

开始界面:

5694bccc0d67affd881c6540038cf64b.png

切换界面:

5746b948690bf90c2d0cd92fc122e1b1.png

结束界面:

4ec911c389ddeaf64576a3468e5f197c.png

Step6:实现游戏主函数

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

206941ea04885f11110973a5daf7ffaa.png

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

好啦,本文分享就到这里啦,更多python学习可以关注我们哦!

85fef1536efc236951bceb3f0bd3d831.png
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值