2017-02-08 36 views
0

Я делаю эту игру, в которой вы используете клавиши w, a, s, d для перемещения мяча. Я пытаюсь сделать таймер, который начинается, когда вы нажимаете «начать игру». Проблема в том, что когда я делаю что-то вроде time.sleep, он прерывает движение мяча. Я хочу отобразить таймер в правом верхнем углу экрана и сделать его 1 минута (также я сделаю условное утверждение, когда таймер остановится, поэтому я хотел бы, чтобы это было возможно).Как создать таймер, который начнется через определенное время и не будет перегружать мою программу в pygame?

+0

Никогда не спивайте темы в приложении, если у вас нет нитки, с которой вы спите. PyGame, вероятно, имеет собственный механизм задержки. – Carcigenicate

+0

Создайте переменную 'time = 0' и в основном цикле выполните' dt + = clock.tick (fps) 'и' if start_game: time + = dt', где clock - pygame.time.Clock() и fps это ваша частота кадров. У них есть if-statement, проверяющий 'if time> = 60000: start_game = False' (время будет в миллисекундах). –

+0

Информация о бонусе: вы можете комбинировать эти методы с модулем, чтобы сделать что-то, что происходит каждый определенный промежуток времени! – Douglas

ответ

1

Это то, что, по моему мнению, было бы самым простым и наилучшим образом соответствовало бы вашим потребностям.

clock = pygame.time.Clock() 
fps = 60 # Or whatever frame-rate you want to cap the game at. 
time = 0 
game_started = False 

# This is the main loop. 
while True: 

    dt = clock.tick(fps) 

    if game_started: 
     time += dt 
    if time >= 60000: # 60 seconds. 
     game_started = False 

    # Then handle, events, update/draw objects etc. 

Просто установите game_started = True при нажатии на кнопку, и переменная time начнет увеличиваться во времени. Затем вы можете просто нарисовать переменную time на экране, как вам нравится. Если вы не хотите нарисовать его, когда он не работает, просто нажмите его, когда game_started - True.