Pygame: Как вызвать определенную переменную внутри класса в моей основной игре l oop? - PullRequest
1 голос
/ 16 апреля 2020

Итак, я делаю какую-то глупую платформенную игру, и сейчас я работаю со снарядом. Сейчас все работает нормально, но я не знаю, как заставить снаряд двигаться влево, я могу только двигать его вправо. У меня есть переменная с именем Bullet, которая находится внутри класса, но я не знаю, как ее вызвать в основном l oop. Когда я пытаюсь это назвать, это не определено. Вот мой код для пули:

        def shoot(self):
            if self.ammo > 0:
                Bullet = bullet(self.Game,self.rect.x,self.rect.top)
                self.Game.all_sprites.add(Bullet)
                self.Game.bullets.add(Bullet)
                self.ammo -= 1

Вот класс пули

class bullet(pg.sprite.Sprite):
    def __init__(self, Game,x,y):
        pg.sprite.Sprite.__init__(self)
        self.image = pg.image.load('magicBullet.png')
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.Game = Game
        self.Player = Player
        self.speed = 10

    def update(self):
        self.rect.x += self.speed

Может кто-нибудь помочь?

1 Ответ

2 голосов
/ 16 апреля 2020

Зачем начинать имя переменной с заглавной буквы, а имя класса в нижнем регистре? Это должно быть наоборот. См. Руководство по стилю для Python Код - Имена классов


В любом случае, вам необходимо определить направление движения при появлении пули.

Добавить дополнительное аргумент скорости для конструктора класса bullet:

class bullet(pg.sprite.Sprite):
    def __init__(self, Game, x, y, speed):
        pg.sprite.Sprite.__init__(self)
        self.image = pg.image.load('magicBullet.png')
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.Game = Game
        self.Player = Player
        self.speed = speed

    def update(self):
        self.rect.x += self.speed

Добавьте аргумент, который определяет направление к методу shoot. Допустимые значения для аргумента direction: -1 для движения влево или 1 для движения вправо:

def shoot(self, direction):
    if self.ammo > 0:

        speed = 10 * direction

        Bullet = bullet(self.Game, self.rect.x, self.rect.top, speed)

        self.Game.all_sprites.add(Bullet)
        self.Game.bullets.add(Bullet)
        self.ammo -= 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...