Обновление переменных класса при использовании групп спрайтов - PullRequest
0 голосов
/ 30 марта 2020

Сначала я покажу вам мой код (за пределами основного l oop):

START_BAT_COUNT = 10
BAT_IMAGE_PATH = os.path.join( 'Sprites', 'Bat_enemy', 'Bat-1.png' )

bat_image = pygame.image.load(BAT_IMAGE_PATH).convert_alpha()
bat_image = pygame.transform.scale(bat_image, (80, 70))


class Bat(pygame.sprite.Sprite):
    def __init__(self, bat_x, bat_y, bat_image, bat_health, bat_immune):
        pygame.sprite.Sprite.__init__(self)
        self.bat_health = bat_health
        self.bat_immune = bat_immune
        self.image = bat_image
        self.rect = self.image.get_rect()
        self.mask = pygame.mask.from_surface(self.image)
        self.rect.topleft = (bat_x, bat_y)
        self.bat_x = bat_x
        self.bat_y = bat_y
    def update(self):
        self.bat_x += 500

all_bats = pygame.sprite.Group()

for i in range(START_BAT_COUNT):
    bat_x = (random.randint(0, 500))
    bat_y = (random.randint(0, 500))
    bat_health = 5
    bat_immune = False

    new_bat = Bat(bat_x, bat_y, bat_image, bat_health, bat_immune)
    all_bats.add(new_bat)

Внутри основного l oop:

all_bats.update()
all_bats.draw(display)

В обновлении () я увеличиваю значение bat_x на 500 каждый раз, когда код читается, и я знаю, что значение bat_x увеличивается, когда я проверял это, печатая значения bat_x и наблюдая за их увеличением. У меня вопрос, есть ли способ увеличить bat_x, и это действительно двигает мою летучую мышь? На данный момент переменная увеличивается, но летучая мышь не двигается. Спасибо

1 Ответ

0 голосов
/ 30 марта 2020

Каковы размеры вашего дисплея? Если вы перемещаете летучую мышь на 500 пикселей в направлении x, то она сразу же улетит с экрана, как только начнет двигаться. Кроме того, ваша летучая мышь может не двигаться, потому что вы не обновили положение ее прямоугольника.

В строках

    def update(self):
        self.bat_x += 500

try

    def update(self):
        self.rect.move_ip(500, 0)

где move_ip перемещает прямоугольник на место и увеличивает координату х летучей мыши на 500 при каждом обновлении.

...