Python 介绍屏幕未加载
我无法正确加载由def game_intro()定义的介绍屏幕。每当我运行它时,它就会被卡在一个空白的黑屏上。在我添加它之前,游戏运行得很好 我已经尝试过调试器,但未能成功找出错误。我正在使用Python IDE编写代码。问题代码如下:Python 介绍屏幕未加载,python,pygame,Python,Pygame,我无法正确加载由def game_intro()定义的介绍屏幕。每当我运行它时,它就会被卡在一个空白的黑屏上。在我添加它之前,游戏运行得很好 我已经尝试过调试器,但未能成功找出错误。我正在使用Python IDE编写代码。问题代码如下: 导入pygame 导入时间 pygame.init() scrWdt=500 scrHgt=500 win=pygame.display.set_模式((scrWdt,scrHgt)) pygame.display.set_标题(“蛇”) clock=pygam
导入pygame
导入时间
pygame.init()
scrWdt=500
scrHgt=500
win=pygame.display.set_模式((scrWdt,scrHgt))
pygame.display.set_标题(“蛇”)
clock=pygame.time.clock()
黑色=(0,0,0)
def text_对象(文本、字体):
textSurface=font.render(文本,真,黑色)
返回textSurface,textSurface.get_rect()
def game_intro():
简介=正确
而简介:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
win.fill(白色)
largeText=pygame.font.font('freesansbold.ttf',115)
TextSurf,TextRect=text_对象(“Snake”,largeText)
TextRect.center=((scrWdt/2),(scrHgt/2))
win.blit(TextSurf,TextRect)
pygame.display.update()
时钟滴答(100)
游戏介绍()
我想看到一个写着“蛇”字的白色屏幕
intro = True
while intro:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
我很确定这个循环将永远运行,或者至少直到你退出。pygame.event.get()
调用检索一个事件列表,但唯一的方法是获取一个QUIT
列表
因此,它永远不会到达您的代码,实际上做介绍
您可能需要(Pythonic,但实际上是伪代码):
你的缩进很简单
def game_intro():
intro = True
while intro:
for event in pygame.event.get():
if event.type == pygame.QUIT:
intro = False
# --->
win.fill(pygame.Color('white'))
largeText = pygame.font.Font('freesansbold.ttf',115)
TextSurf, TextRect = text_objects("Snake", largeText)
TextRect.center = ((scrWdt/2),(scrHgt/2))
win.blit(TextSurf, TextRect)
pygame.display.update()
clock.tick(100)
game_intro()
pygame.quit()
只需将游戏循环的其余部分正确缩进while循环即可。
另外,您没有在任何地方定义white
,但是对于简单的颜色,您可以使用pygame.Color
类
此外,我将循环的中断条件更改为实际使用您的
intro
变量,而不是pygame.quit()
,因为后者将导致视频系统出现一些错误(在事件循环中取消初始化pygame后,pygame.display.update()
仍会调用一次,从而导致错误).您的缩进有误-您必须在介绍时在内绘制缩进(如果您假设要设置动画)。或者在介绍时在前面画它。你说得对!我从win.fill缩进到clock.tick(100),它出现了。非常感谢你!zeshaykes,这永远不会退出循环。我想在某个时候,你会想从介绍屏幕出来玩真正的游戏,是吗?paxdiablo,谢谢你的提醒。你说得对,我确实想退出介绍。上面没有,但我最近添加了一个按钮,单击它可以退出简介。谢谢!我从来没有想过做一个计数器的while循环。我决定接受furas的评论,只是因为它的代码更少,但我感谢你的回答!非常感谢。我很感激你对这种破坏性条件的评论,因为我一直收到你所说的视频系统错误,却不知道要改变什么。所以每当我使用pygame.display.update()
,我就不应该使用pygame.quit()
?附近有工作吗?
def game_intro():
intro = True
while intro:
for event in pygame.event.get():
if event.type == pygame.QUIT:
intro = False
# --->
win.fill(pygame.Color('white'))
largeText = pygame.font.Font('freesansbold.ttf',115)
TextSurf, TextRect = text_objects("Snake", largeText)
TextRect.center = ((scrWdt/2),(scrHgt/2))
win.blit(TextSurf, TextRect)
pygame.display.update()
clock.tick(100)
game_intro()
pygame.quit()