视频系统未初始化错误,即使已初始化
Video System not initialized error even though initialized
我知道这个错误已经被报告过几次了,但是已经检查并且 pygame 都安装正确并且初始化正确,所以我只能猜测我的编程中有一些我没有看到的错误完全没有(过去两周……)。有人可以帮我看看为什么 运行 下面的代码会出错吗?:
import sys
import pygame
from settings import Settings
def run_game():
# Initialize game and create a screen object.
pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
# Start main loop for the game
while True:
#Watch for keyboard and mouse events.
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# Redraw Screen during each pass through.
screen.fill(ai_settings.bg_color)
# Make most recently drawn visible
pygame.display.flip()
run_game()
您已经定义了一个函数,其函数体是这个:
def run_game():
# Initialize game and create a screen object.
pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
然后你有一个循环是:
while True:
#Watch for keyboard and mouse events.
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# Redraw Screen during each pass through.
screen.fill(ai_settings.bg_color)
# Make most recently drawn visible
pygame.display.flip()
这里的问题是上面的循环在 run_game
范围之外,它是在全局范围内定义的,所以它在 run_game()
之前执行甚至打电话。因此,pygame 和屏幕都没有被初始化,这就是为什么你会收到初始化错误的原因。
您假设调用 run_game
将初始化 pygame 并执行主循环,但它不会... python 缩进很重要。我建议您先确保了解 python 是如何解释这些行的,然后这些类型的问题就会变得非常清楚。
顺便说一句,这是一本不错的读物https://docs.python.org/3/reference/lexical_analysis.html#lexical-analysis
我知道这个错误已经被报告过几次了,但是已经检查并且 pygame 都安装正确并且初始化正确,所以我只能猜测我的编程中有一些我没有看到的错误完全没有(过去两周……)。有人可以帮我看看为什么 运行 下面的代码会出错吗?:
import sys
import pygame
from settings import Settings
def run_game():
# Initialize game and create a screen object.
pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
# Start main loop for the game
while True:
#Watch for keyboard and mouse events.
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# Redraw Screen during each pass through.
screen.fill(ai_settings.bg_color)
# Make most recently drawn visible
pygame.display.flip()
run_game()
您已经定义了一个函数,其函数体是这个:
def run_game():
# Initialize game and create a screen object.
pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
然后你有一个循环是:
while True:
#Watch for keyboard and mouse events.
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# Redraw Screen during each pass through.
screen.fill(ai_settings.bg_color)
# Make most recently drawn visible
pygame.display.flip()
这里的问题是上面的循环在 run_game
范围之外,它是在全局范围内定义的,所以它在 run_game()
之前执行甚至打电话。因此,pygame 和屏幕都没有被初始化,这就是为什么你会收到初始化错误的原因。
您假设调用 run_game
将初始化 pygame 并执行主循环,但它不会... python 缩进很重要。我建议您先确保了解 python 是如何解释这些行的,然后这些类型的问题就会变得非常清楚。
顺便说一句,这是一本不错的读物https://docs.python.org/3/reference/lexical_analysis.html#lexical-analysis