pygame.error:视频系统未初始化

时间:2020-05-26 16:59:27

标签: python-3.x pygame

所以我写了这段代码:

# 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 个答案:

答案 0 :(得分:1)

在没有运行代码或没有堆栈跟踪问题发生位置的情况下,我们需要首先为您调试代码。因此,将完整的堆栈跟踪添加到您的问题将是有益的。我非常有信心,但是您应该解决两个问题。

pygame.display.update()应该正确缩进到主游戏事件循环的while循环中。其次,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()

这也似乎是学校的任务,而不是在线课程(但我在这里可能是错的),不过,如果我是对的话,我会留下这条建议。我强烈建议,如果您遇到问题,请向您的老师寻求指导。老师总是有理由给您一个挑战/要解决的问题。它教您在课堂上学到的最新技术,如果您无法使用所提供的工具解决问题-您很可能还没有学习所教的基本知识-并且您真的应该重新做一些步骤。

相关问题