Как вывести на экран время, проведенное в игре
Перейти к навигации
Перейти к поиску
В отличие от 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
Источник: Renpy для чайников: Как вывести на экран время, проведенное в игре
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Renpy для чайников | Вернуться к началу статьи |