植物大战僵尸4 #
- 植物类加载及错误提示
- 向日葵类的创建及功能
- 事件处理-向日葵装填
植物类加载及错误提示 #
本小节主要介绍创建植物类class Plant()的方法,包括植物加载方法,游戏图片加载报错处理。
同时在主程序类中添加储存植物的列表
#4 图片加载报错处理
LOG = '文件:{}中的方法:{}出错'.format(__file__,__name__)
#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)
class MainGame():
#4 存储所有植物的列表
plants_list = []
向日葵类的创建及功能 #
本小节主要介绍创建向日葵类class Sunflower()的方法,包括时间计数器的使用,以及将图片实时加载到窗口中的方法
#5 向日葵类
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
#5 功能:生成阳光(生产钱)
def produce_money(self):
self.time_count += 1
if self.time_count == 25:
MainGame.money += 5
self.time_count = 0
#5 向日葵加入到窗口中
def display_sunflower(self):
MainGame.window.blit(self.image,self.rect)
事件处理-向日葵装填 #
本小节主要介绍向日葵在事件窗口中的装填。在主程序类class MainGame()中添加事件处理函数deal_events()。
同时,由于游戏界面需要不断更新,需在主程序类class MainGame()中的开始游戏函数def start_game()中的循环while not GAMEOVER:中添加事件处理函数deal_events()以实现反复加载。
#1 主程序
#class MainGame():
#8事件处理
def deal_events(self):
#8 获取所有事件
eventList = pygame.event.get()
#8 遍历事件列表,判断
for e in eventList:
if e.type == pygame.QUIT:
self.gameOver()
elif e.type == pygame.MOUSEBUTTONDOWN:
# print('按下鼠标按键')
print(e.pos)
# print(e.button)#左键1 按下滚轮2 上转滚轮为4 下转滚轮为5 右键 3
x = e.pos[0] // 80
y = e.pos[1] // 80
print(x, y)
map = MainGame.map_list[y - 1][x]
print(map.position)
#8 增加创建时候的地图装填判断以及金钱判断
if e.button == 1: #按左键,种向日葵
if map.can_grow and MainGame.money >= 50:
sunflower = Sunflower(map.position[0], map.position[1])
MainGame.plants_list.append(sunflower)
print('当前植物列表长度:{}'.format(len(MainGame.plants_list)))
map.can_grow = False
MainGame.money -= 50
#def start_game(self):
while not GAMEOVER:
#8 调用事件处理的方法
self.deal_events()
小结 #
本节主要介绍了植物大战游戏中植物类-向日葵类的设置及装填