首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >玩游戏时,屏幕只更新退出游戏窗口?

玩游戏时,屏幕只更新退出游戏窗口?
EN

Stack Overflow用户
提问于 2015-07-02 08:55:25
回答 2查看 853关注 0票数 2

我刚开始玩游戏,我需要一些帮助,因为我的代码不能正常工作。

好的,问题是:当我运行它时,我希望屏幕变成白色,但是它仍然是黑色的,但是当我按出口时,它变成白色了大约一秒,然后关闭。

当我放一张图片(如player.png)时也会发生这种情况,它在退出前会出现大约一秒钟。我不知道我做错了什么,

请帮助修复代码并解释为什么会发生这种情况?

以下是代码:

代码语言:javascript
运行
复制
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。我没有任何错误

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-02 09:08:03

Python对缩进敏感。在代码中,只在主循环结束后调用pygame.display.update()

另外,您只在两个for循环之间的事件队列中将背景画成白色,然后填充队列中每个事件的背景。

请注意,这还可能导致QUIT事件被第二个循环“吞没”的情况。

所以这就是

代码语言:javascript
运行
复制
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()

应该是

代码语言:javascript
运行
复制
while not gameExit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameExit = True

    screen.fill(white)

    pygame.display.update()
票数 1
EN

Stack Overflow用户

发布于 2015-07-03 23:18:14

好的,所以我同意Sloth的观点,但是不要在最后做所有的屏幕更新、填充和闪烁,这会降低脚本的可读性,您应该像一个animate函数一样,每次运行在while循环的末尾,并将闪存和屏幕更新的内容放到这个函数中。很抱歉你被判了死刑。

哦,你不需要你的GameLoop变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31179933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档