当前位置:   article > 正文

使用Python编写一个植物大战僵尸_植物大战僵尸python

植物大战僵尸python

上次写了一个俄罗斯方块,感觉好像大家都看懂了,这次就更新一个植物大战僵尸吧
植物大战僵尸的话

Python源码
君羊
4656 885 91
(备注:苏)

引入需要的模块

import pygame
import random
  • 1
  • 2

配置图片地址

IMAGE_PATH = 'imgs/'
  • 1

设置页面宽高

scrrr_width = 800
scrrr_height = 560
  • 1
  • 2

创建控制游戏结束的状态

GAMEOVER = False
  • 1

图片加载报错处理

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

创建地图类

class Map():
  • 1

存储两张不同颜色的图片名称

map_names_list = [IMAGE_PATH + 'map1.png', IMAGE_PATH + 'map2.png']
  • 1

初始化地图

def __init__(self, x, y, img_index):
    self.image = pygame.image.load(Map.map_names_list[img_index])
    self.position = (x, y)
  • 1
  • 2
  • 3

是否能够种植

self.can_grow = True
  • 1

加载地图

def load_map(self):
    MainGame.window.blit(self.image, self.position)

  • 1
  • 2
  • 3

植物类

class Plant(pygame.sprite.Sprite):
    def __init__(self):
        super(Plant, self).__init__()
        self.live = True

  • 1
  • 2
  • 3
  • 4
  • 5

加载图片

def load_image(self):
    if hasattr(self, 'image') and hasattr(self, 'rect'):
        MainGame.window.blit(self.image, self.rect)
    else:
        print(LOG)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

向日葵

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 = x
        self.rect.y = y
        self.price = 50
        self.hp = 100
        # 5 时间计数器
        self.time_count = 0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

新增功能:生成阳光

def produce_money(self):
    self.time_count += 1
    if self.time_count == 25:
        MainGame.money += 5
        self.time_count = 0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

向日葵加入到窗口中

def display_sunflower(self):
    MainGame.window.blit(self.image, self.rect)

  • 1
  • 2
  • 3

豌豆射手类

class PeaShooter(Plant):
    def __init__(self, x, y):
        super(PeaShooter, self).__init__()
        # self.image 为一个 surface
        self.image = pygame.image.load('imgs/peashooter.png')
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.price = 50
        self.hp = 200
        # 6 发射计数器
        self.shot_count = 0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

增加射击方法

def shot(self):
    # 6 记录是否应该射击
    should_fire = False
    for zombie in MainGame.zombie_list:
        if zombie.rect.y == self.rect.y and zombie
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/413827
推荐阅读
相关标签
  

闽ICP备14008679号