在指定的时间后更改变量或bool的值一次?

时间:2018-03-03 13:57:36

标签: python python-3.x pygame

我想在用户点击进入一段时间后更改bool的值,同时保持程序运行。

Pygame的延迟或计时器不起作用,因为它们会停止整个代码或一遍又一遍地重复用户事件。

1 个答案:

答案 0 :(得分:0)

尽管pygame在允许程序运行时没有等待的功能,但有几种方法可以在没有pygame的情况下执行它。你可以导入时间,一个用于获取当前时间的python附带的模块。它有一个函数time.time(),它返回自设定时间以来的秒数。因此,当用户点击进入时你可以x = time.time(),并且你不断检查游戏循环中是否time.time() - x <= delay,如果是真,则更改你的布尔值。例如:

import pygame, time, sys
screen = pygame.display.set_mode((100,100))
timer = False # timer is true after the user hits enter and before your boolean changes
delay = 1 # whatever your delay is (seconds)
bool = False
while True: # game loop
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN:
            x = time.time() # x is the time when you press enter
            timer = True # the timer is activated
    print(bool)
    if timer:
        if time.time() - x >= delay: # if the amount of time since enter was pressed is the delay
            bool = True #change bool value

此代码将等到您按Enter键,然后在一秒后更改布尔值。如果您在游戏循环中添加任何内容,它将在计时器处于活动状态时运行。这是有效的,因为time.time()获取当前时间,如果当前时间与用户按下输入的时间之间的差异(表示为x)等于延迟,那么那么多时间过去了用户按Enter键并更改布尔值。