2017-08-15 268 views
0

我是一个开始尝试使用python和pygame在线课程制作游戏的程序员。但是当我运行下面的代码时,pygame窗口打开一瞬间,然后关闭。当我运行我的Python程序时,pygame窗口打开一秒钟,然后退出

import pygame 

pygame.init() 
screen = pygame.display.set_mode((900,700)) 

finished = False 

while finished == False: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      finished = True 

    rectOne = pygame.Rect(0,0,30,30) 

    color = (0,0,255) #R,G,B 
    pygame.draw.rect(screen,color,rectOne) 
    pygame.display.flip() 

我也没有收到任何错误消息。这就像它运行我的循环,然后将finished更改为True。我检查了很多次,我的代码完全符合在线课程的代码。我使用的是Mac和Python 2.7.13。谁能帮忙? 更新:我不确定这是否有帮助,但我仍然可以运行下面的代码,它工作得很好。 进口pygame的

pygame.init() 
screen = pygame.display.set_mode((900,700)) 

finished = False 

while finished == False: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      finished = True 
+2

你如何运行代码?您可能需要从终端运行它以查看任何错误。 –

+1

当我运行你的代码时,窗口保持打开状态,左上角有一个蓝色方块。它不会在第二个 – jacoblaw

+0

后关闭,方法是单击运行选项卡,然后单击“运行模块”。它可能是我的电脑。 – MakeDaGames

回答

0

OK,我已搜查你的问题了一下,我来,你需要尝试以下几点结论:

A)使用pygame.display.update()代替pygame.display.flip()

B)尝试将这些放在主循环外部的程序结尾处:pygame.QUIT并在下一行quit()

C)如果上述任何一种情况蒸发散的工作,那么你需要检查QUIT事件得到自动触发,这样做是通过改变你的while循环,如下所示:

while not finished: 
    for event in pygame.event.get(): 
     print(event) 

在此之后,当你运行你的程序,在壳牌它将显示在pygame屏幕上发生的事件,如果有问题,那么第一个和最后一个事件将是QUIT,然后它可能是Mac或版本的问题,因为我最近阅读关于它的reddit,检查出它here

+0

感谢您的帮助,但这些工作都没有。当我打印这些事件时,我得到: 我非常肯定这对我的Mac来说肯定是个问题,如果这是真的,我想知道你是否可以回答我将很快发布的问题。 – MakeDaGames

相关问题