在pygame中暂停游戏和用户输入

时间:2014-09-28 19:37:51

标签: python timer pygame

我目前正在Pygame制作一款游戏,我按照教程制作基本游戏,但知道我想改进它并使其在经过一定时间后(例如每30秒左右)游戏暂停,用户被问到一个问题,他们必须输入正确的答案才能继续玩游戏。我一直在网上寻找并尝试了一下但是经历了相当多的苦苦挣扎!以下是相关代码:

class question():
    pressKeySurf, pressKeyRect = makeTextObjs('9+1.', BASICFONT, WHITE)
    pressKeySurf, pressKeyRect = makeTextObjs('Press A for 10.', BASICFONT, WHITE)
    pressKeySurf, pressKeyRect = makeTextObjs('Press B for 15.', BASICFONT, WHITE)
    for event in pygame.event.get():
        if (event.key==K_a):
            showTextScreen('Correct answer') # pause until a key press
            lastFallTime = time.time()
            lastMoveDownTime = time.time()
            lastMoveSidewaysTime = time.time()
        else:
            showTextScreen("Wrong")

pygame.time.set_timer(question,1000)

我不知道目前是否正朝着正确的方向前进,因为我认为我理解错误而且我不应该使用课程计时器,但不确定?

1 个答案:

答案 0 :(得分:2)

你希望这是一个功能,而不是一个类。将class替换为def

更大的问题是您对set_timer的使用不正确。它是:

set_timer(eventid, timems)

其中eventidtimems都是整数。 set_timer以指定的时间间隔将事件放入事件队列,它不会调用任何函数。您必须将代码放在主循环中以检查eventid,然后执行相应的代码。

来自this SO answer:的示例代码:

pygame.init()
pygame.time.set_timer(USEREVENT + 1, 100)
while True:
    for event in pygame.event.get():
        if event.type == USEREVENT + 1:
           functionName()
        if event.type == QUIT:
            pygame.quite()
            sys.exit()