Pygame退出游戏并接受输入

时间:2013-12-13 14:25:11

标签: 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

其余代码属于此范围,但是当我使用此循环时屏幕变黑。

2 个答案:

答案 0 :(得分:1)

要告诉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()

答案 1 :(得分:0)

你的第一个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

我希望这可以帮到你!