Вызов класса не запускает методы - PullRequest
1 голос
/ 20 июня 2019

Я пытаюсь анимировать объект по экрану в pygame с помощью класса.

Я пробовал это без класса и работает просто отлично, но с классом это не работает.

class Car:
    def __init__(self):
        self.locx = 20
        self.locy = 90
        self.x = 20
        self.y = 90

    def draw_car(self):
        pygame.draw.circle(screen, RED, [self.locx, self.locy], 20, 8)

    def animator(self):
        self.locx += 5


def main_game():  # main game loop, for all code related to the simulation
    game_play = False
    while not game_play:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_play = True
                pygame.quit()

        clock.tick(60)
        screen.fill(BLACK)
        pygame.draw.line(screen, BLUE, [1, 450], [800, 450], 5)
        draw_road()
        Car()

Нарисуйте круг и анимируйте его по экрану с помощью класса.

1 Ответ

1 голос
/ 20 июня 2019

Вызов Car() просто создает Car объект. Он не рисуется и не перемещается, пока вы не наберете Car.draw_car или Car.animator. Вам нужно создать объект Car перед циклом while и назначить его переменной скажем my_car. Чтобы нарисовать и переместить машину, вам нужно позвонить my_car.animator() и my_car.draw_car в while -цикле, т.е.

def main_game():  # main game loop, for all code related to the simulation
    game_play = False
    my_car = Car()
    while not game_play:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_play = True
                pygame.quit()

        clock.tick(60)
        screen.fill(BLACK)
        pygame.draw.line(screen, BLUE, [1, 450], [800, 450], 5)
        draw_road()
        my_car.animator()
        my_car.draw_car()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...