《植物大战僵尸》是一款极富策略性的小游戏,可怕的僵尸即将入侵,唯一的防御方式就是栽种植物。此游戏集成了即时战略、塔防御战和卡片收集等要素、游戏的内容就是:玩家控制植物,抵御僵尸的进攻,保护这片草坪。
那么咱们今天自己来整一个植物大战僵尸小游戏!

相关文件

想学Python的小伙伴可以关注小编的Python源码、问题解答&学习交流群:733089476
有很多的资源可以白嫖的哈,需要源码的小伙伴可以在+君羊领取

环境搭建

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

效果展示

代码实现

引入需要的模块

import pygame
import random

配置图片地址

IMAGE_PATH = 'imgs/'

设置页面宽高

scrrr_width=800
scrrr_height =560

创建控制游戏结束的状态

GAMEOVER = False

图片加载报错处理

LOG = '文件:{}中的方法:{}出错'.format(__file__,__name__)

创建地图类

class Map():# 存储两张不同颜色的图片名称map_names_list = [IMAGE_PATH + 'map1.png', IMAGE_PATH + 'map2.png']# 初始化地图def __init__(self, x, y, img_index):self.image = pygame.image.load(Map.map_names_list[img_index])self.position = (x, y)# 是否能够种植self.can_grow = True# 加载地图def load_map(self):MainGame.window.blit(self.image,self.position)

植物类

class Plant(pygame.sprite.Sprite):def __init__(self):super(Plant, self).__init__()self.live=True# 加载图片def load_image(self):if hasattr(self, 'image') and hasattr(self, 'rect'):MainGame.window.blit(self.image, self.rect)else:print(LOG)

向日葵类

class Sunflower(Plant):def __init__(self,x,y):super(Sunflower, self).__init__()self.image = pygame.image.load('imgs/sunflower.png')self.rect = self.image.get_rect()self.rect.x = xself.rect.y = yself.price = 50self.hp = 100# 时间计数器self.time_count = 0# 新增功能:生成阳光def produce_money(self):self.time_count += 1if self.time_count == 25:MainGame.money += 5self.time_count = 0# 向日葵加入到窗口中def display_sunflower(self):MainGame.window.blit(self.image,self.rect)

豌豆射手类

class PeaShooter(Plant):def __init__(self,x,y):super(PeaShooter, self).__init__()# self.image 为一个 surfaceself.image = pygame.image.load('imgs/peashooter.png')self.rect = self.image.get_rect()self.rect.x = xself.rect.y = yself.price = 50self.hp = 200# 发射计数器self.shot_count = 0# 增加射击方法def shot(self):# 记录是否应该射击should_fire = Falsefor zombie in MainGame.zombie_list:if zombie.rect.y == self.rect.y and zombie.rect.x < 800 and zombie.rect.x > self.rect.x:should_fire = True# 如果活着if self.live and should_fire:self.shot_count += 1# 计数器到25发射一次if self.shot_count == 25:# 基于当前豌豆射手的位置,创建子弹peabullet = PeaBullet(self)# 将子弹存储到子弹列表中MainGame.peabullet_list.append(peabullet)self.shot_count = 0# 将豌豆射手加入到窗口中的方法def display_peashooter(self):MainGame.window.blit(self.image,self.rect)

豌豆子弹类

class PeaBullet(pygame.sprite.Sprite):def __init__(self,peashooter):self.live = Trueself.image = pygame.image.load('imgs/peabullet.png')self.damage = 50self.speed  = 10self.rect = self.image.get_rect()self.rect.x = peashooter.rect.x + 60self.rect.y = peashooter.rect.y + 15def move_bullet(self):# 在屏幕范围内,实现往右移动if self.rect.x < scrrr_width:self.rect.x += self.speedelse:self.live = False# 新增,子弹与僵尸的碰撞def hit_zombie(self):for zombie in MainGame.zombie_list:if pygame.sprite.collide_rect(self,zombie):#打中僵尸之后,修改子弹的状态,self.live = False#僵尸掉血zombie.hp -= self.damageif zombie.hp <= 0:zombie.live = Falseself.nextLevel()

僵尸类

class Zombie(pygame.sprite.Sprite):def __init__(self,x,y):super(Zombie, self).__init__()self.image = pygame.image.load('imgs/zombie.png')self.rect = self.image.get_rect()self.rect.x = xself.rect.y = yself.hp = 1000self.damage = 2self.speed = 1self.live = Trueself.stop = False# 僵尸的移动def move_zombie(self):if self.live and not self.stop:self.rect.x -= self.speedif self.rect.x < -80:#8 调用游戏结束方法MainGame().gameOver()# 判断僵尸是否碰撞到植物,如果碰撞,调用攻击植物的方法def hit_plant(self):for plant in MainGame.plants_list:if pygame.sprite.collide_rect(self,plant):#  僵尸移动状态的修改self.stop = Trueself.eat_plant(plant)

代码可能有点长,就不全部展示出来啦

需要源码的小伙伴可以+扣君羊

今天咱们用Python整一个植物大战僵尸游戏 | 附带源码相关推荐

  1. Unity植物大战僵尸游戏素材+源码

    Unity 3D 是目前主流的游戏开发引擎,有数据显示,全球最赚钱的 1000 款手机游戏中,有 30% 是使用 Unity 3D 开发出来的.尤其在 VR 设备中,Unity 3D 游戏开发引擎具有 ...

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

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

  3. 利用pygame模块设计一个植物大战僵尸游戏初版设定

    摘要 在当今电子信息高速发展时代下,网络游戏和单机游戏已经遍布了我们的生活,随着游戏的发展,有许多游戏早已被淘汰掉,只剩下少部分的经典还依旧有人玩,植物大战僵尸就是其中之一. 植物大战僵尸是一款伴随着 ...

  4. 今天咱们用Python整一个超级玛丽游戏 | 附带源码

    相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复超级玛丽 Pytho ...

  5. 植物大战僵尸以及超级玛丽源码分享

    看到私信有许多小伙伴问我要源码,很抱歉不能及时回复,现在把源码放在这里啦.有需要自取 植物大战僵尸 演示地址:用python实现植物大战僵尸(游戏截图+动态演示+源码分享) ​链接:点击获取源码 提取 ...

  6. 【Python游戏】Python实现一个Q版泡泡堂小游戏 | 附带源码

    相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复泡泡堂 Python ...

  7. 【Python游戏】Python实现一个星球大战的小游戏 | 附带源码

    相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复星球大战 Pytho ...

  8. 【Python游戏】Python实现一个可以切换单人或双人对战乒乓球小游戏 | 附带源码

    相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复 乒乓球 Pytho ...

  9. Python游戏开发,Python实现开心消消乐小游戏 附带源码

    开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 效果展示 原理简 ...

最新文章

  1. ubuntu 14.04:Error found when loading /root/.profile
  2. 【发布】温度监测报警器v1.1a内测版!
  3. Boost Asio总结(15)class basic_stream_socket
  4. cae计算机仿真分析技术,厉害了 揭秘汽车设计中CAE仿真技术
  5. 【CKEditor】上传图片接口接收不到CKEditorFuncNum参数
  6. xml控制html样式,XML与CSS综合设置实例
  7. 位运算(、|、^、~、>>、<<)
  8. C# Asp.net 制作一个windows服务
  9. idea显示左边project栏和隐藏project栏的快捷键
  10. MapGIS 6.7 数字非标准分幅影像校正方法
  11. 蛋花花分享人工智能概念的诞生与发展
  12. 绝对值函数可导点的判断
  13. Vue ui/vue create创建项目报错:Failed to get response from https://registry.npmjs.org/vue-cli-version-ma
  14. 专访 | Apache Pulsar PMC 成员翟佳:社区的信任最重要
  15. js基本概念(上)之数据类型
  16. 补天漏洞平台:让更多的白帽子脱离黑产
  17. 从信息传播角度来看链路预测
  18. 精尽 Dubbo 原理与源码专栏( 已经完成 69+ 篇,预计总共 75+ 篇 )
  19. Netapp常用命令
  20. 网络I/O与磁盘I/O

热门文章

  1. 正则表达式—HTML中的匹配
  2. oracle常用知识,oracle的基本知识
  3. 惠普G80服务器做阵列和安装redhat系统
  4. QUANT[2]:量化交易策略基本框架搭建
  5. 第四届【强网杯】主动
  6. boost:system
  7. 王者荣耀移速计算器(已弃坑)
  8. Bootstrap 组件:缩略图组件(thumbnail)
  9. 【Python学习随笔】依赖倒置原则 + 简单工厂模式
  10. 小米air13.3 i7 8550U MX150 指纹版使用电池开机无法正常进入系统解决方案