我想在用户点击进入一段时间后更改bool
的值,同时保持程序运行。
Pygame的延迟或计时器不起作用,因为它们会停止整个代码或一遍又一遍地重复用户事件。
答案 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键并更改布尔值。