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

最近在逛 Github 发现了一个用纯 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

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

02

如何玩

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

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

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

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

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

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

03

项目代码一览

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

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

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

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

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

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

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

04

如何作弊

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

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

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

链接:

https://github.com/marblexu/PythonPlantsVsZombies

近期原创热门:

菜鸟学Python原班人马打造,专注于分享GitHub上有趣的资源包括,Python,Java,Go语言前端学习等优质的学习资源。爆料程序员圈的新鲜趣事,热门干货,职场感悟。

程序员GitHub

点的“在看”,否则就看不到我了555

GitHub又放大招,Python版本的植物大战僵尸还能作弊玩!相关推荐

  1. python植物大战僵尸辅助器手机版_GitHub又放大招,Python版本的植物大战僵尸还能作弊玩!...

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

  2. 今天咱们用Python整一个植物大战僵尸游戏 | 附带源码

    <植物大战僵尸>是一款极富策略性的小游戏,可怕的僵尸即将入侵,唯一的防御方式就是栽种植物.此游戏集成了即时战略.塔防御战和卡片收集等要素.游戏的内容就是:玩家控制植物,抵御僵尸的进攻,保护 ...

  3. 我在Github上找到开源的《植物大战僵尸》

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 开源最前线(ID:OpenSourceTop) 猿妹 ...

  4. 【Python游戏】Python实现一个植物大战僵尸小游戏,非常简单,可以用于做毕业设计哟 | 附源码

    前言 halo,包子们上午好 今天给打击整一个植物大战僵尸 无广告版本 哈哈 说实话,现在的小游戏很多都是有广告,多少有点难受 今天给大家直接安排 相关文件 关注小编,私信小编领取哟! 当然别忘了一件 ...

  5. win10运行python没有硬编码器_实测Win10下加载github上的Python版本斗图神器

    今天看到这篇文章GitHub 上有个沙雕开发者,做了款斗图工具后火了...​mp.weixin.qq.com 觉得有点意思,实际上这个已经有段时间了,更早的在CSDN-专业IT技术社区-登录​blog ...

  6. 实战:用python绘制《植物大战僵尸》中的石头怪

    对于<植物大战僵尸>中的石头怪大家一定不陌生,请用Python中应用"*"和'@'输出一个石头怪,输出如下图: 代码: print(" * * * * *\n ...

  7. Python浅析-从植物大战僵尸源代码入门Python 从Python就业前景分析如何学习

    源代码私信小编"学习"领取 Python到底有多火呢?Python的简单易学,应用领域广让Python语言一路飙升到不可磨灭的重要地位.先来看看Python的就业方向吧 Pytho ...

  8. 用python写一个植物大战僵尸代码

    由于这是一个相对复杂的游戏,所以我将为您提供一个简化版的代码示例. # 创建植物类 class Plant:def __init__(self, name, damage):self.name = n ...

  9. Python控制键盘鼠标,原来还能这样玩?

    这个库让你可以控制和监控输入设备. 对于每一种输入设备,它包含一个子包来控制和监控该种输入设备: pynput.mouse:包含控制和监控鼠标或者触摸板的类. pynput.keyboard:包含控制 ...

  10. Pygame实战:据说—这是一款还原度超高的植物大战僵尸游戏,你感受下......

    导语 哈喽!大家好,我是木木子! 又到了每日游戏更新系列,看到这么如下.gif是不是让你想起来了童年吖~ ​ 植物大战僵尸的人气可谓是经久不衰,晃着脑袋生产阳光的向日葵,突突突吐着子弹的豌豆射手!​ ...

最新文章

  1. 细说 Java 主流日志工具库
  2. jQuery——获取当前索引值
  3. 增加自增列 耗时长_又一批长事务,P0故障谁来背锅?
  4. std::string 用法
  5. HBase 0.98 分布式集群安装详解
  6. logback1.1.11日志无法自动删除
  7. python程序把文件编码转换
  8. .Net 4.0并行库实用性演练
  9. leetcode 368. 最大整除子集(dp)
  10. html语言闪烁特效代码,css3 文字闪烁特效代码
  11. javaweb成长之路:SSM框架搭建
  12. android软件百分比怎么实现,Android自实现百分比布局
  13. 软件开发技术视频教程
  14. linux查看u盘的分区,在Linux下访问windows分区以及U盘
  15. 评微软裁员测试:自动化测试并不能代替人工
  16. 每天一个算法(简单)
  17. 如何用活字格定制监狱管理系统
  18. 国家计算机二级c语言历年真题及答案,全国计算机二级C语言历年真题
  19. selenium 12306登录滑块验证码
  20. 用户空间和内核空间的区别

热门文章

  1. 写一下安装composer,以及composer安装依赖包时候遇到的烦人问题吧
  2. FANUC机器人有关动作速度倍率的相关系统变量-解释说明
  3. Android获取明天日期
  4. 2020家用千兆路由器哪款好_家用千兆路由器哪款好(2020年千兆路由器排行榜)...
  5. 苹果x微信为什么不出定位服务器,苹果x微信发动态为什么显示不了位置
  6. 关于GPS定位高德开放平台SDK深度应用
  7. 湘西纪行 芷江 芋头侗寨 通道 黔阳 高椅村
  8. psv变革怎么安装游戏_创造变革游戏
  9. 【PYG】常用和采坑总结
  10. [因果推断] 什么是因果推断(一)