ошибка pygame: видеосистема не инициализирована

Пишу код для класса, но продолжаю получать ошибку. вот что у меня есть:

import sys
import pygame

from settings import Settings

from ship import Ship

class AlienInvasion:

    def _init_(self):

        pygame.init()
        self.settings = Settings()
        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height))
        pygame.display.set_caption('Alien Invasion')
        self.ship = Ship(self)
        self.bg_color = (230, 230, 230)

    def run_game(self):

        while True:
            self._check_events()
            self._update_screen()
    def _check_events(self):

            #watch for keyboard and mouse events
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
    def _update_screen(self):

            self.screen.fill(self.settings.bg_color)
            self.ship.blitme()  

            pygame.display.flip()
if _name_ == '_main_':

    ai = AlienInvasion()
    ai.run_game()

person Derek Benz    schedule 01.10.2019    source источник


Ответы (1)


Возможно, это ошибка SO-вставки, но в коде есть одиночное подчеркивание, тогда как требуется двойное подчеркивание.

Я думаю, что конкретная ошибка, которую задает ваш вопрос, вызвана:

class AlienInvasion:

    def _init_(self):
        pygame.init()

Этот init() должен иметь двойное подчеркивание, например:

class AlienInvasion:

    def __init__(self):     # <-- HERE
        pygame.init()

Таким образом, только с одним подчеркиванием, python не распознал эту функцию _init_() как инициализатор класса - __init__(), и поэтому инициализация отображения pygame.init() никогда не вызывалась. Это приводит к ошибке pygame.error: video system not initialized.

Также:

if __name__ == "__main__":   # (note, double underscores on both)
person Kingsley    schedule 01.10.2019