全部源码和数据集请点赞关注收藏后评论区留言或私信博主要 完全免费~~
动态演示视频已经上传到我的个人主页 有兴趣的伙伴可自行前往 观看
相信许多小伙伴们都玩过植物大战僵尸这款游戏,可以说是很多人的童年回忆,接下来我们用pygame这个库来实现一个简单版的植物大战僵尸 效果如下
可以看出来 当我们豌豆射手种的足够多的时候,基本上是不会输滴
与此同时 控制台会输出有关信息
程序结构包括1:地图类
2:植物类
3:向日葵类
4:豌豆射手类
5:豌豆子弹类
6:僵尸类
7:主程序
8:启动主函数 开始运行
最后 部分源码如下
#1 引入需要的模块
import pygame
import random
#1 配置图片地址
IMAGE_PATH = r'C:\Users\Admin\Desktop\游戏源码-10 植物大战僵尸\imgs/'
#1 设置页面宽高
scrrr_width=800
scrrr_height =560
#1 创建控制游戏结束的状态
GAMEOVER = False
#4 图片加载报错处理
LOG = '文件:{}中的方法:{}出错'.format(__file__,__name__)
#3 创建地图类
class Map():
#3 存储两张不同颜色的图片名称
map_names_list = [IMAGE_PATH + 'map1.png', IMAGE_PATH + 'map2.png']
#3 初始化地图
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
#3 加载地图
def load_map(self):
MainGame.window.blit(self.image,self.position)
#4 植物类
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)
#5 向日葵类
class Sunflower(Plant):
def __init__(self,x,y):
super(Sunflower, self).__init__()
self.image = pygame.image.load(r'C:\Users\Admin\Desktop\游戏源码-10 植物大战僵尸\imgs\sunflower.png')
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.price = 50
self.hp = 100
#5 时间计数器
self.time_count = 0
#5 新增功能:生成阳光
def prod