【问题标题】:Pygame not responding at simple programPygame在简单程序中没有响应
【发布时间】:2019-12-15 00:36:57
【问题描述】:

我开始使用 pygame 制作游戏,而我只是在那个时候,我应该有 10*10 的灰色方块。 当我启动程序时,出现方块但程序没有响应。 脚本有什么问题还是我的笔记本电脑性能有问题?

import pygame
pygame.init()
win=pygame.display.set_mode((768,768))
left=50
up=50
difx=20
dify=20
sx=50
sy=50
grey=(90,90,90)
black=(0,0,0)
blue=(0,0,250)
def draw():
    pygame.Surface.fill(win,black)
    for x in range(0,100):
        pygame.draw.rect(win,grey,(left+x%10*(sx+difx),up+round((x-x%10)/10)*(sy+dify),sx,sy))
    pygame.display.update()
while True:
    pygame.time.delay(100)
    draw()

Python 3.7 视窗 10

【问题讨论】:

    标签: python windows pygame lag no-response


    【解决方案1】:

    你可以试试这个。

    import pygame
    
    def main():
        pygame.init()
        win=pygame.display.set_mode((768,768))
        left=50
        up=50
        difx=20
        dify=20
        sx=50
        sy=50
        grey=(90,90,90)
        black=(0,0,0)
        blue=(0,0,250)
        def draw():
            pygame.Surface.fill(win,black)
            for x in range(0,100):
                pygame.draw.rect(win,grey,(left+x%10*(sx+difx),up+round((x-x%10)/10)*(sy+dify),sx,sy))
    
        while True:
            for e in pygame.event.get():
                if e.type == pygame.QUIT:
                    return 
                pygame.display.update()
                draw()
    
    if __name__ == '__main__':
        main()
    
    

    您缺少for e in pygame.event.get():

    【讨论】:

    • 行得通,谢谢。你能解释为什么我的版本不起作用吗?这是某种错误还是我犯了一个错误?
    • 我在关注pygame的在线示例。我认为这是您的粗心错误。您在 while True 循环中缺少代码 for e in pygame.event.get():,它会在某个事件上更新窗口。它冻结的原因是您的 while True 循环不断更新,无论发生任何事件。如果您认为我对您有所帮助,您可以选择此作为答案来关闭此问题!
    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多