Pygame退出游戏并接受输入



我在Pygame中的游戏出现了一些问题。我想让Windows右上角的十字架在点击后退出游戏。但它似乎不起作用。我还想让它从空格键输入并掷骰子。

diceRoll = random.randint(1, 4)
while True:
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.KEYDOWN:
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.key == pygame.K_SPACE:
                diceRoll

其余的代码都属于这个范围,但当我用这个循环时,屏幕会变黑。

要告诉PyGame正确退出,必须执行

if event.type == pygame.QUIT:
    pygame.quit()
    # perhaps force a quit using sys.exit()

如果你在一个循环中,你也应该打破这个循环,使用break

对于空格键活动,您已经完成了一半。

if event.key =0 pygame.K_SPACE:
    roll_dice()

您的第一个if语句犯了一个非常大的错误。您应该使event.type行彼此对齐。你正在这样做:

if event.type == pygame.KEYDOWN:
    if event.type == pygame.QUIT:

什么时候应该这样做:

if event.type == pygame.QUIT:
    pygame.quit()
    sys.exit()
elif event.type == pygame.KEYDOWN:
    pass #Put your other code here

第二个错误是您将pygame.quit放入while循环中。它会退出游戏/让屏幕上什么都没有,让你的程序变得疯狂。循环内安全退出程序的唯一逻辑方法是使用sys.exit()。因此,您的新while循环应该是:

while True:
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                print 'diceRoll' #Doing diceRoll alone won't do anything
pygame.quit() #This is the proper location of this function

我希望这对你有帮助!

最新更新