《植物大战僵尸》游戏它是一款极富策略性的小游戏,集成了即时战略、塔防御战和卡片收集等要素,玩家控制植物抵御僵尸的进攻,保护这片植物园。记得小编刚工作的时候抱着IPAD经常玩到深夜。

最近在逛 Github 发现了一个用纯 Python 打造的《植物大战僵尸》,用鼠标收集阳光,选择植物卡片并播种植物,原汁原味,满满的回忆,目前该项目仅仅支持冒险模式。

修改python游戏 python可以修改游戏吗_修改python游戏

01

安装并运行

1).下载项目代码

git clone git@github.com:marblexu/PythonPlantsVsZombies.git

2).切换到python3环境,官方建议使用 python3.7 ,安装 pygame

pip install pygame==1.9.6

3).切换到项目目录,运行项目代码

python main.py

安装成功项目效果如下所示:

修改python游戏 python可以修改游戏吗_项目代码_02

02

如何玩

使用鼠标收集阳光,收集植物卡片和植物的种子,只需要鼠标点点点操作

可以通过更改 的数值来更改起始关卡

1).START_LEVEL_NUM 为1 和 2时表示起始为白昼模式,如下图:

修改python游戏 python可以修改游戏吗_python 只取数值_03

2).START_LEVEL_NUM  为 3 时表示起始为夜晚模式,如下图:

修改python游戏 python可以修改游戏吗_项目代码_04

3).START_LEVEL_NUM  为 4 时表示起始为传送带模式,如下图:

修改python游戏 python可以修改游戏吗_Python_05

4).START_LEVEL_NUM  为 5 时表示起始为坚果保龄球模式模式,非常好玩,简单粗暴!如下图:

修改python游戏 python可以修改游戏吗_python 只取数值_06

03

项目代码一览

项目代码主要分为这几个大的模块

修改python游戏 python可以修改游戏吗_python 只取数值_07

植物大战僵尸在操作上最大的特点在于,用鼠标点击的操作更多。所以,我们看下这个项目是如何获取鼠标操作相关的,通过下面的代码得知:

修改python游戏 python可以修改游戏吗_修改python游戏_08

它是用一个 event_loop 方法,透过 for event in pg.event.get() 这个循环,可以获取所有鼠标和键盘操作,这是 pygame 中很灵活的一个功能,得到鼠标点击动作之后,我们就需要得到鼠标点击的位置。上面箭头指的代码是获取鼠标点击的横纵坐标的值,这样就知道了一次鼠标点击的位置了。

植物大战僵尸里面有不同的僵尸,不同的植物,甚至不同的地图。比如说,在植物里面就有很多种:最基本的向日葵,豌豆射手,坚果。因为不同的植物有不同的属性,我们就需要用不同的类来表示植物。

修改python游戏 python可以修改游戏吗_python 只循环目录_09

根据上面代码可知,会先写一个 Plant 基类,然后其他植物的类会继承这个 Plant 基类

在这个游戏中,僵尸移动的操作是连帧的。而不是完全是平移的。可以看下作者是如何处理动画连帧操作的。如下图:

修改python游戏 python可以修改游戏吗_项目代码_10

这就是一组普通的僵尸,不仔细看的话以为每个图片都是一样的,其实仔细看的时候就会发现,每个图片僵尸的动作都是有细微差别的。在僵尸行走的过程中,实际上是在不断地切换着一组图片。这样下来,我们看到的僵尸的动作就是连贯的。

04

如何作弊

通过上面介绍得知,该项目使用 json 文件存储关卡数据(例如僵尸的位置和时间,背景信息),我们可以通过修改 json 文件内容来修改游戏参数,比如把调一下初始阳光的数量,调整僵尸出现的位置。例如,如果source/constants.py 中的 START_LEVEL_NUM 值为 3 ,要对应的修改 source/data/map/level_3.json

修改python游戏 python可以修改游戏吗_项目代码_11

修改python游戏 python可以修改游戏吗_python 只循环目录_12

init_sun_value 对应的是初始化阳光的数值,time 是僵尸出现的时间,单位是毫秒,map_y 是僵尸出现的位置,地图上从上向下开始数,初始位置为0 。

有兴趣的小伙伴可以下载一下这个库,拿它来学习 Python 练手是一个不错的选择。





  • 避坑指南!Python里面的这九个坑
  • 再见,付费录屏软件!我用70行Python代码打造免费版!
  • 真香!一行Python代码,帮你制作小姐姐的表情包
  • 学Python还是Java, 7张漫画带你全面分析
  • 一个炫酷的Python库,让你的终端输出方式,逼格秒变高!
  • 首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密