Я делаю игру с Python и Pygame, и я использую time.time для определения времени прохождения пользователями уровней. Однако у меня также есть меню паузы. Как сделать так, чтобы при открытом меню паузы time.time не продолжалось?
Приостановка потока времени.
Ответы (1)
Я думаю, что я бы сделал что-то вроде этого: используйте время, которое clock.tick()
возвращает, чтобы увеличить таймер в каждом кадре, если игра не приостановлена, и когда пользователь приостанавливает и возобновляет игру, вызывайте его без аргумента, чтобы отбросить время, прошедшее во время игра была приостановлена.
import sys
import pygame as pg
pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
font = pg.font.Font(None, 30)
timer = 0
dt = 0
paused = False
running = True
while running:
for event in pg.event.get():
if event.type == pg.QUIT:
running = False
elif event.type == pg.KEYDOWN:
paused = not paused
# This is needed to discard the time that
# passed while the game was paused.
clock.tick()
if not paused:
timer += dt # Add delta time to increase the timer.
screen.fill((30, 30, 30))
txt = font.render(str(round(timer, 2)), True, (90, 120, 40))
screen.blit(txt, (20, 20))
pg.display.flip()
dt = clock.tick(30) / 1000 # dt = time in seconds since last tick.
pg.quit()
sys.exit()
person
skrx
schedule
04.06.2017
time.time
, чтобы приостановить внутриигровой таймер. - person user2357112 supports Monica   schedule 03.06.2017