我正在制作一个游戏,其中您派遣奴才为您而战。我已经能够使它工作,但是代码变得又长又重复。我相信有更好的方法可以做到这一点。
我有两个问题。首先,我没有一个在需要我的奴才时可以调用的奴才类,而是被迫为每个奴才创建一个类(Minion1,Minion2等),因为它们应该有自己的x,y坐标,并且优点和缺点以及动画。如果我使用相同的类调用新对象,它们似乎也会重置。可以一次上课吗?
import pygame
class Minion1:
def __init__(self, x, y):
self.hp = 100
self.spd = 50
self.str = 50
self.walking = False
self.x = x
self.y = y
self.w = 32
self.h = 48
self.images = pygame.image.load('images/minion1.png').convert_alpha()
alpha = self.images.get_at((0, 0))
self.images.set_colorkey(alpha)
self.numImages = 4
self.current_image = 0
self.animation_time = 0.1
self.current_time = 0
def update(self, dt):
self.current_time += dt
if self.current_time >= self.animation_time:
self.current_time = 0
if self.current_image >= self.numImages - 1:
self.current_image = 0
else:
self.current_image += 1
self.x -= self.velocity
def render_right(self, gameDisplay):
gameDisplay.blit(self.images, (self.x, self.y), (self.current_image * self.w, self.h * 2, self.w, self.h))
我的第二个问题是发送小兵。我刚刚为每个奴才编写了相同的代码。有没有办法改变数字(从minion1到minion2)并使用更少的代码?
send_minion(minion1.x, minion1.y, minion1.w, minion1.h, 'walk1')
if minion1.walking:
minion1.update(dt)
minion1.render_right(gameDisplay)
minion1.x += 1
send_minion(minion2.x, minion2.y, minion2.w, minion2.h, 'walk2')
if minion2.walking:
minion2.update(dt)
minion2.render_right(gameDisplay)
minion2.x += 1