我刚开始玩游戏,我需要一些帮助,因为我的代码不能正常工作。
好的,问题是:当我运行它时,我希望屏幕变成白色,但是它仍然是黑色的,但是当我按出口时,它变成白色了大约一秒,然后关闭。
当我放一张图片(如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。我没有任何错误
发布于 2015-07-02 09:08:03
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()发布于 2015-07-03 23:18:14
好的,所以我同意Sloth的观点,但是不要在最后做所有的屏幕更新、填充和闪烁,这会降低脚本的可读性,您应该像一个animate函数一样,每次运行在while循环的末尾,并将闪存和屏幕更新的内容放到这个函数中。很抱歉你被判了死刑。
哦,你不需要你的GameLoop变量。
https://stackoverflow.com/questions/31179933
复制相似问题