我对pygame很新,我需要一些帮助,因为我的代码工作不正常。
好的,这就是问题所在:我希望屏幕在运行时变为白色,但它仍然是黑色,但是当我按下出口时,它会变成白色大约一秒然后关闭。
这也发生在我放一张照片(如player.png)它出现前大约一秒钟。我不知道我做错了什么,
请帮助修复代码并解释它为什么会发生?
这是代码:
import pygame
pygame.init()
screen = pygame.display.set_mode((640,480))
image = pygame.image.load('player.png')
gameExit = False
gameLoop = True
pygame.display.update()
white = (255,255,255)
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
for event in pygame.event.get():
screen.fill(white)
pygame.display.update()
pygame.quit()
quit()
PS。我没有收到任何错误
答案 0 :(得分:1)
Python是缩进敏感的。在您的代码中,只有在主循环结束后才会调用pygame.display.update()
。
此外,如果两个for
循环之间的事件队列中有事件,则只绘制背景白色,然后填充队列中每个事件的背景。
请注意,这也可能导致第二次循环“吞下”QUIT
事件。
所以这个
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
for event in pygame.event.get():
screen.fill(white)
pygame.display.update()
应该是
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
screen.fill(white)
pygame.display.update()
答案 1 :(得分:0)
好的,所以我同意Sloth的意见,但是不要在最后进行所有的屏幕更新和填充以及blitting,使脚本的可读性降低,你应该像animate
函数那样在最后运行每次while循环,并在该函数中放置blitting和screen更新内容。对于连续判刑感到抱歉。
哦,你不需要你的GameLoop
变量。