python植物大战僵尸(1)

欢迎加入我们卧虎藏龙的python讨论qq群:729683466

导 语 ●

之前一直发一些简单的小游戏

百十行代码的那种

估计大家已经了解的一清二楚了

现在可以讲一些比较复杂的游戏

今天就带领大家寻找一下童年记忆

《植物大战僵尸》

代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“game43 ”获取源代码

效果演示

ss

e2e6c0c37a4f1a6951ac69a24498d6b2.gif

往期精选

这是以前写的一些python塔防游戏,大家可以回顾一下。

python塔防之“双层箭塔”(一)

python塔防之------“红精灵来袭”

 🛠

开发工具

python3.6.4

第三方库:pygame,json

讲解部分

一:前言

很久以前公众号发过一些比较复杂的游戏代码,比如大概一年前,发过一个塔防游戏,这个塔防游戏是我一年前写的,比较粗糙。之前本来是想以后慢慢补充的。结果后来没人提醒我,挖的这个坑直接忘记了,再重新看这个代码的时候,已经过了一年了。啥都不记得了,更别提修改了。不过想起了之前发的一个植物大战僵尸,这个代码更加复杂,可是当时只用了一期来介绍,显然不太合适,现在准备多做几期植物大战僵尸的代码讲解,让大家更好的理解比较复杂的游戏。

二:资源准备

植物大战僵尸和以前的小游戏不一样,这是需要很多图片的,由于图片太多了且种类丰富,我们专门建立一个文件夹,讲这些图片分门别类的存放好,文件夹的名称就是resources,其中有一个文件夹graphics

b9cbe8acfa26691e84fab72d5cd46605.png

这里面有子弹,卡片,植物,僵尸,地图等种种图片,我们点开植物Plants看一看。

f24aba25938aee5994e4267d8f26d3ae.png

d5a992458b325d5b3f3942f50289b66f.png

这里面是各种植物的图片,如果想要增加新的图片种类,可以在这里添加即可。

当然,并不是所有的植物都是一个文件夹,然后文件夹里面所有的图片都一样,有些时候,一个植物完成一次攻击可以分成几个动作,比如说“倭瓜”,这样就需要好几个不同动作的图片。程序运行的时候将这几个图片依次放出来,这样就形成了一次完整的攻击动作。

3e3a195a622e3746c3e064ca1b4d135b.png

同理,一个僵尸的行走动作也可以分成很多步骤,程序运行的时候,这些动作依次展示出来即可。

e998e9d8b99a5b1066dc2dd95b479dbe.png

三:代码文件

这个游戏很复杂,需要很多个py文件,于是我们建立了一个
source文件夹,专门用于存储这些py文件。这个文件夹下由一个main.py文件,一个constants.py文件,里面存储的是一些比较重要的常量,以及一个tool文件,是用来控制程序运行的。之后的推送里,我们会依次介绍这些文件的作用。

在其它的文件中,也放了一些py文件。比如在component文件中,放置了植物的类,僵尸的类,以及地图的类。

四:整体思路

其实所有的游戏在游戏思路上都差不多,核心是一个while true循环,保证游戏可以一直玩下去,然后中间有一些跳出循环的代码块,比如说,如果所有的僵尸都被打死了,那么跳出循环,游戏结束。或者说,僵尸进入了你的房间,这种情况下也是游戏结束。在循环中,通过设置游戏屏幕帧率变化,可以让静态的图片变成动态的视频画面。也就是,每一次循环中,各种游戏元素按照各自的特点移动,僵尸肯定是按照各自的速度向左前进,一个僵尸的行走动作可以拆分为好几个图片,然后依次放出这些图片。这就构成了僵尸的移动。

同理,植物发起攻击的过程中,也会发射子弹,子弹也要按照各自的速度移动,有一些攻击方式比较复杂的植物,比如地刺,倭瓜,也要拆分为个攻击步骤。

而这些,需要通过设置不同的植物和僵尸类来表示,之后我们会一节节讲出来。

五:尾声

在之后的推送中,我们会将这个代码拆开揉碎了给大家讲,会推出很多期,直到代码讲完。下一期要讲的是各种植物和僵尸的定义。

感谢大家观看

有钱的老板可打赏一下小编哦

扫描二维码

关注我们

QQ群:729683466

◰  

参考来源


GitHub

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值