ошибка pygame: видеосистема не инициализирована - PullRequest
1 голос
/ 01 октября 2019

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

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()

1 Ответ

2 голосов
/ 01 октября 2019

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

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

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...