python植物大战僵尸图片素材_Python 植物大战僵尸代码实现: 图片加载和显示切换...

本文介绍了如何使用Python实现植物大战僵尸游戏中的图片加载和显示切换,包括僵尸行走、攻击等不同状态的图片切换。通过加载图片资源,解析图片文件夹结构,实现了不同僵尸类型的动画效果,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

游戏介绍

以前很火的植物大战僵尸游戏, 本想在网上找个python版本游戏学习下,无奈没有发现比较完整的,那就自己来写一个把。图片资源是从github上下载的,因为图片资源有限,只能实现几种植物和僵尸。

功能实现如下:

支持的植物类型:太阳花,豌豆射手,寒冰射手,坚果,樱桃炸弹。新增加植物:双重豌豆射手,三重豌豆射手。

支持的僵尸类型:普通僵尸,棋子僵尸,路障僵尸,铁桶僵尸。

使用json文件保存关卡信息,设置僵尸出现的时间和位置。

新增加除草机。

下面是游戏的截图:

图1

图2

图片显示切换

从图1和图2可以看到,僵尸的行走和攻击时的图片显示会有不同,这篇文章讲下如何进行图片显示的切换。

以上面的路障僵尸为例,一共有下面几种图片类型。

带着路障行走

带着路障攻击

不带路障行走(即变成普通僵尸的行走)

不带路障攻击(即变成普通僵尸的攻击)

没有头的行走

没有头的攻击

死亡

图3是路障僵尸的这7种图片类型的示例

图片加载

植物大战僵尸的图片资源比较特别,一种图片类型的每一个动作是一个单独的图片,如图4是路障僵尸带着路障攻击的动作图片,一共有11个图片,所以加载图片的代码要做对应的修改。

完整代码

游戏实现代码的github链接 植物大战僵尸

这边是csdn的下载链接 植物大战僵尸

图片加载

在 source\tool.py 中 load_all_gfx 函数遍历resources\graphics 目录和子目录。

代码中做了一个简单的区分:

如果在resources\graphics\subfolder\ 目录中是图片,那就是单独的一个图片,比如resources\graphics\Screen 目录中的界面图片

如果在resources\graphics\subfolder\ 目录中是子目录,那这个子目录或子子目录中的所有图片都属于一个图片类型,比如resources\graphics\Zombies\ConeheadZombie\ConeheadZombieAttack 目录下就是路障僵尸带着路障攻击的动作图片, 如图4所示。

1 def load_all_gfx(directory, colorkey=c.WHITE, accept=('.png', '.jpg', '.bmp', '.gif')):2 graphics ={}3 for name1 inos.listdir(directory

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python植物大战僵尸游戏是一个基于Python语言的简单游戏,它的规则和经典的植物大战僵尸游戏类似。在游戏中,玩家需要通过种植各种不同的植物来抵御来袭的僵尸。 关于Python植物大战僵尸代码的介绍,我不清楚您具体想了解哪方面的内容,以下是我简单介绍一下游戏的结构和一些代码实现。 该游戏的代码主要分为三个部分:界面设计、游戏逻辑和游戏控制。其中,界面设计包括各种元素的图片、声音和布局;游戏逻辑包括植物、僵尸和子弹的属性、移动和攻击方式;游戏控制包括游戏开始、结束、暂停和保存等功能。 以下是该游戏的一些代码实现: 1. 植物的创建和属性设置: ```python class Plant: def __init__(self, x, y, plant_type): self.x = x self.y = y self.plant_type = plant_type self.health = self.max_health = PLANT_HEALTH[plant_type] self.damage = PLANT_DAMAGE[plant_type] self.attack_speed = PLANT_ATTACK_SPEED[plant_type] self.image = pygame.image.load(PLANT_IMAGE[plant_type]).convert_alpha() ``` 2. 僵尸的创建和属性设置: ```python class Zombie: def __init__(self, x, y, zombie_type): self.x = x self.y = y self.zombie_type = zombie_type self.health = self.max_health = ZOMBIE_HEALTH[zombie_type] self.damage = ZOMBIE_DAMAGE[zombie_type] self.speed = ZOMBIE_SPEED[zombie_type] self.image = pygame.image.load(ZOMBIE_IMAGE[zombie_type]).convert_alpha() ``` 3. 游戏逻辑中判断子弹是否碰撞到僵尸: ```python def check_bullet_zombie_collision(bullets, zombies): for bullet in bullets: for zombie in zombies: if bullet.x + bullet.width > zombie.x and \ bullet.x < zombie.x + zombie.width and \ bullet.y + bullet.height > zombie.y and \ bullet.y < zombie.y + zombie.height: zombies.remove(zombie) bullets.remove(bullet) return True return False ``` 以上只是该游戏代码的一部分,如果您对其他方面还有疑问或者需要更加详细的介绍,请告诉我具体想了解哪方面的内容,我会尽力给您解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值