双方坦克都绘制显示了,现在开始移动敌方坦克。
一、敌方坦克移动
四种坦克,移速和伤害各自不同,防御值也不同,整理好这些数据,统一加到type_list列表,再通过随机产生的order进行各自赋值。
设置了一个累加变量,让坦克移动起来有点点卡顿的感觉。
设定移动开关,触发时能够让坦克改变方向并重新根据方向载入图片。暂时先这样实现这些功能,后面再修改。
# 导入库
import random
import os.path
import pygame
# 敌方坦克类
class EnemyTank(pygame.sprite.Sprite):
# 根据坦克种类及各种类的状态数量,建立一个列表来遍历。如第1种坦克有3种状态。。。。第4种坦克有10种状态。
type_list = [(1, 3, 8, 0), (2, 1, 10, 3), (3, 2, 12, 2), (4, 10, 11, 1)]
# 随机选择一种坦克
order = type_list[random.randint(0, len(type_list) - 1)]
enemy_tank_dict = {
'up': [],
'down': [],
'left': [],
'right': []
}
for i in range(order[1]):
enemy_tank_dict['up'].append(
pygame.image.load(os.path.join('image', 'enemy', 'enemy_tank' + str(order[0]), 'up' + str(i + 1) + '.png')))
enemy_tank_dict['down'].append(
pygame.image.load(os.path.join('image', 'enemy', 'enemy_tank' + str(order[0]), 'down' + str(i + 1) + '.png')))
enemy_tank_dict['left'].append(
pygame.image.load(os.path.join('image', 'enemy', 'enemy_tank' + str(order[0]), 'left' + str(i + 1) + '.png')))
enemy_tank_dict['right'].append(
pygame.image.load(os.path.join('image', 'enemy', 'enemy_tank' + str(order[0]), 'right' + str(i + 1) + '.png')))
print(order[0], enemy_tank_dict)
# 初始化函数,定义方向、速度等
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.direction = 'up'
self.amour = self.order[1]
self.image = self.enemy_tank_dict[self.direction][self.amour - 1]
self.rect = self.image.get_rect()
self.rect.x = random.randrange(0, 1000 - self.rect.width)
self.rect.y = random.randrange(0, 600 - self.rect.height)
self.move = True
self.speed = self.order[2]
self.damage = self.order[3]
self.step = 30
self.accumulationMax = 0
self.accumulation = 0.1
# 移动、重绘坦克
def update(self):
if self.move:
if self.accumulationMax >= 1:
self.accumulationMax = 0
if self.direction == 'up' and self.step > 0:
self.rect.y -= self.speed
self.step -= 1
elif self.direction == 'down' and self.step > 0:
self.rect.y += self.speed
self.step -= 1
elif self.direction == 'left' and self.step > 0:
self.rect.x -= self.speed
self.step -= 1
elif self.direction == 'right' and self.step > 0:
self.rect.x += self.speed
self.step -= 1
else:
self.accumulationMax += self.accumulation
else:
self.direction = random.choice(['up', 'down', 'left', 'right'])
self.image = self.enemy_tank_dict[self.direction][self.amour - 1]
self.step = 30
self.move = True
if self.direction == 'up' and self.rect.top <= 0: