pygame.error: видеосистема не инициализирована - PullRequest
0 голосов
/ 26 мая 2020

Итак, я написал этот код:

# Pygame development 4
# Focus on making code object oriented
# Introduce classes and objects into our code

# Gain access to the pygame library
import pygame

        # Size of the screen
        SCREEN_TITLE = 'Crossy RPG'
        SCREEN_WIDTH = 500
        SCREEN_HEIGHT = 500
        # Colors according to RGB codes
        WHITE_COLOR = (255, 255, 255)
        BLACK_COLOR = (0, 0 , 0)
        # Clock used to update game events and frames
        clock = pygame.time.Clock()
        pygame.font.init()
        font = pygame.font.SysFont('comicsans', 75)

class Game:

    # Typical rate of 60, equivalent to fps
    TICK_RATE = 60
    # Initializer for the game class to set up the width, height, and title
    def __init__(self, title, width, height):
        self.title = title
        self.width = width
        self.height = height

        # Create the window of specified size in white to display the game
        self.game_screen = pygame.display.set_mode((width, height))
        # Set the game window color to white
        self.game_screen.fill(WHITE_COLOR)
        pygame.display.set_caption(title)

    def run_game_loop(self):
        is_game_over = False


        # Main game loop, used to update all gameplay suh as movement, check, and graphics
        # Runs unit is_game_over = True
        while not is_game_over:
        # A loop to get a;l of the events occuring at any given time
        # Events are most often mouse movement, mouse and button clicks, or eit events
          for event in pygame.event.get():
            # If we have a quite type event(exit out) then exit out of the game loop
            if event.type == pygame.QUIT:
                is_game_over = True

                print(event)


    # Update all game graphics
    pygame.display.update()
    # Tick the clock to update everything within the game
    clock.tick(self.TICK_RATE)

pygame.init()

new_game = Game(SCREEN_TITLE, SCREEN_WIDTH, SCREEN_HEIGHT)
new_game.run_game_loop()



pygame.quit()
quit()

Прямо сейчас я учусь кодировать с python, поэтому я следую онлайн-курсу, и, поскольку мне не удалось получить помощь на форумах этого веб-сайта, я подумал, что могу задать вопрос здесь! Я просматривал код несколько раз, чтобы проверить орфографические ошибки, но не смог их найти, и в любом случае я думаю, что дело не в том, что чего-то не хватает, а как-то связано с pygame.display.update! Может кто-нибудь мне помочь?

1 Ответ

1 голос
/ 26 мая 2020

Без запуска вашего кода или без трассировки стека того, где возникает проблема, нам нужно сначала отладить код для вас. Поэтому было бы полезно добавить к вашим вопросам полную трассировку стека. Однако я почти уверен, что есть две проблемы, которые вам следует решить.

pygame.display.update() должно быть правильно отнесено к while l oop вашего основного игрового события l oop. Во-вторых, pygame.init() должен запускаться перед любой другой инициализацией (или, по крайней мере, так меня учили годами, и каждый пример указывает на)

Попробуйте это, я думаю он решает вашу проблему:

# Pygame development 4
# Focus on making code object oriented
# Introduce classes and objects into our code

# Gain access to the pygame library
import pygame

pygame.init()

# Size of the screen
SCREEN_TITLE = 'Crossy RPG'
SCREEN_WIDTH = 500
SCREEN_HEIGHT = 500
# Colors according to RGB codes
WHITE_COLOR = (255, 255, 255)
BLACK_COLOR = (0, 0 , 0)
# Clock used to update game events and frames
clock = pygame.time.Clock()
pygame.font.init()
font = pygame.font.SysFont('comicsans', 75)

class Game:

    # Typical rate of 60, equivalent to fps
    TICK_RATE = 60
    # Initializer for the game class to set up the width, height, and title
    def __init__(self, title, width, height):
        self.title = title
        self.width = width
        self.height = height

        # Create the window of specified size in white to display the game
        self.game_screen = pygame.display.set_mode((width, height))
        # Set the game window color to white
        self.game_screen.fill(WHITE_COLOR)
        pygame.display.set_caption(title)

    def run_game_loop(self):
        is_game_over = False


        # Main game loop, used to update all gameplay suh as movement, check, and graphics
        # Runs unit is_game_over = True
        while not is_game_over:
        # A loop to get a;l of the events occuring at any given time
        # Events are most often mouse movement, mouse and button clicks, or eit events
            for event in pygame.event.get():
                # If we have a quite type event(exit out) then exit out of the game loop
                if event.type == pygame.QUIT:
                    is_game_over = True

                    print(event)


                # Update all game graphics
                pygame.display.update()
                # Tick the clock to update everything within the game
                clock.tick(self.TICK_RATE)

new_game = Game(SCREEN_TITLE, SCREEN_WIDTH, SCREEN_HEIGHT)
new_game.run_game_loop()

pygame.quit()

Это тоже похоже на школьное задание, а не на онлайн-курс (но здесь я могу ошибаться) , тем не менее я ' Оставлю этот совет, если я прав. Я настоятельно советую, если вы столкнетесь с проблемами, попросите совета у учителя. Поскольку есть всегда причина, по которой учителя ставят вам задачу / задачу, которую нужно решить. Он учит вас новейшим методам, которые вы изучили в классе, и если вы не можете решить проблему с помощью предоставленных вам инструментов - вы, скорее всего, не усвоили основы, которые были изучены, - и вам действительно стоит повторить некоторые шаги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...