Pygame 如何使用同一个键启用和禁用一个功能?
Pygame how to enable and disable a function with the same key?
在制作暂停菜单时,我发现无法使用同一键暂停和继续游戏。
假设我想用转义键来做到这一点。
然后,如果我只是按下它,游戏将暂停几微秒,但会继续,因为 pause()
函数也以转义键结束。
我还注意到,如果我将用于结束 pause() 函数执行的键更改为不同于暂停游戏的键,一切都会正常,但我不希望这样。
那我应该怎么做才能避免这种情况,一键暂停和继续游戏呢?
添加一个paused
状态。根据 paused
.
的状态实现事件处理
使用 pygame.time.get_ticks()
来测量时间。计算暂停模式应该结束的时间。到达时间后设置paused = False
:
paused = False
pause_end_time = 0
while running:
current_time = pygame.time.get_ticks()
if current_time > pause_end_time:
paused = False
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
paused = not paused
pause_end_time = current_time + 3000 # pause for 3 seconds
if not paused:
# game event handling
if event.type == pygame.KEYDOWN:
# [...]
# [...]
在制作暂停菜单时,我发现无法使用同一键暂停和继续游戏。
假设我想用转义键来做到这一点。
然后,如果我只是按下它,游戏将暂停几微秒,但会继续,因为 pause()
函数也以转义键结束。
我还注意到,如果我将用于结束 pause() 函数执行的键更改为不同于暂停游戏的键,一切都会正常,但我不希望这样。
那我应该怎么做才能避免这种情况,一键暂停和继续游戏呢?
添加一个paused
状态。根据 paused
.
的状态实现事件处理
使用 pygame.time.get_ticks()
来测量时间。计算暂停模式应该结束的时间。到达时间后设置paused = False
:
paused = False
pause_end_time = 0
while running:
current_time = pygame.time.get_ticks()
if current_time > pause_end_time:
paused = False
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
paused = not paused
pause_end_time = current_time + 3000 # pause for 3 seconds
if not paused:
# game event handling
if event.type == pygame.KEYDOWN:
# [...]
# [...]