В отличие от renpy.get_game_runtime () мой способ не сбрасывает время при перезапуске игры или при выходе в меню. Время считается всегда. Но лучше добавить изображение таймера в главное меню, чтобы при запуске начался отсчет, а при выходе счетчик сохранился в постоянные данные.
init python: import datetime # время старта текущей сессии игры = время последней проверки persistent.game_last_time = datetime.datetime.now() # общее время в игре в секундах if persistent.gametime is None: persistent.gametime = 0 # функция для отображения текущего общего времени в игре def show_gametime(st, at): # сколько прошло со времени последней проверки t = datetime.datetime.now() dt = t - persistent.game_last_time # запоминаем текущее время, как время последней проверки persistent.game_last_time = t # суммируем время в игре со временем с последней проверки persistent.gametime += dt.total_seconds() # в секундах # переводим секунды в часы, минуты, секунды minutes, seconds = divmod(int(persistent.gametime), 60) hours, minutes = divmod(minutes, 60) # переводим текст в изображение # с форматированием (добавлением нулей, если число не двузначное) img = Text("%0*d:%0*d:%0*d" % (2, hours, 2, minutes, 2, seconds)) # на выходе изображение со временем return img, .1 init: # привязываем функцию к динамическому изображению, # чтобы счетчик тикал без обновления экранов image gametime = DynamicDisplayable(show_gametime) screen scr_game_time: # эту же строку можно добавить и в главное меню: add "gametime" align(.95, .05) # для сброса времени в игре: # $ persistent.gametime = 0 # или привязать к кнопке: # textbutton _("Сброс времени") action SetField(persistent, "gametime", 0) # Игра начинается здесь. label start: show screen scr_game_time "Текст игры." return
Комментарии
Отправить комментарий