如何从pygame中的一个类创建具有自己属性的不同对象

时间:2018-10-22 17:46:32

标签: python class object pygame repeat

我正在制作一个游戏,其中您派遣奴才为您而战。我已经能够使它工作,但是代码变得又长又重复​​。我相信有更好的方法可以做到这一点。

我有两个问题。首先,我没有一个在需要我的奴才时可以调用的奴才类,而是被迫为每个奴才创建一个类(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

0 个答案:

没有答案