gpt4 book ai didi

python - ERROR : pygame. 错误:视频系统未初始化

转载 作者:行者123 更新时间:2023-12-05 04:27:53 26 4
gpt4 key购买 nike

我正在阅读一本 Python 书籍。到目前为止,所有的程序都有效,但现在我卡住了。我输入了程序,运行时出现此错误。我检查了所有线路好几次,我认为一切正常。它应该打开一个文本窗口,并在 10 秒后显示一个游戏角色。起初,我有一个缩进错误,但我修正了它。现在我收到了这个新错误。它启动并运行了大约 0.5 秒,但它立即关闭并给出了这个错误。我在 Windows 10 Pro 64 位上使用 Python 3.8.10,这是错误:pygame.error: video system not initialized 这是代码:

import pygame
import time
import subprocess
pygame.init()
screen = pygame.display.set_mode((800, 250))
clock = pygame.time.Clock()
font = pygame.font.Font(None, 25)

pygame.time.set_timer(pygame.USEREVENT, 200)

def text_generator(text):
tmp = ""
for letter in text:
tmp += letter
if letter != " ":
yield tmp
class DynamicText(object):
def __init__(self, font, text, pos, autoreset=False):
self.done = False
self.font = font
self.text = text
self._gen = text_generator(self.text)
self.pos = pos
self.autoreset = autoreset
self.update()

def reset(self):
self._gen = text_generator(self.text)
self.done = False
self.update()

def update(self):
if not self.done:
try: self.rendered = self.font.render(next(self._gen), True, (0, 128, 0))
except StopIteration:
self.done = True
time.sleep(10)
subprocess.Popen("python C:\\Users\\david\\Documents\\pythonbook\\pygame1.py 1", shell=True)

def draw(self, screen):
screen.blit(self.rendered, self.pos)
text=("Steve has gone on a quest to defeat the Ender Dragon. Will he make it?")

message = DynamicText(font, text, (65, 120), autoreset=True)

while True:
for event in pygame.event.get():
if event.type == pygame.QUIT: break
if event.type == pygame.USEREVENT: message.update()
else:
screen.fill(pygame.color.Color('black'))
message.draw(screen)
pygame.display.flip()
clock.tick(60)
continue
break

pygame.quit()

我如何弄清楚错误消息的含义?或者有人知道吗?

最佳答案

您在每一帧中使用 pygame.quit() 退出游戏。在应用程序循环之后而不是在应用程序循环中退出游戏。另外为什么你只在其他情况下更新游戏?在 event.type == pygame.QUIT 情况下的 break 语句只会中断事件循环,但不会中断应用程序循环。更改代码的控制流:

# application loop
run = True
while run:
# event loop
for event in pygame.event.get():
if event.type == pygame.QUIT: run = False
if event.type == pygame.USEREVENT: message.update()

# redraw in every frame
screen.fill(pygame.color.Color('black'))
message.draw(screen)
pygame.display.flip()
clock.tick(60)

# quit after the application loop
pygame.quit()

关于python - ERROR : pygame. 错误:视频系统未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72747305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com