Основы команд и блоков - TrueCat17/Ren-Engine GitHub Wiki
Сценарий, интерфейсы и вообще всё, связанное с игрой, пишется в rpy
-файлах.
Эти файлы содержат в себе блоки (init
, label
и screen
), а блоки содержат команды или другие блоки.
Состоит из имени команды и её параметров, разделённых пробелом. Например:
show np smile
# show - сама команда
# np smile - её параметры
pause 5
# pause - команда
# 5 - параметр
Параметр паузы (как и некоторых других команд) интерпретируется питоном, поэтому если взять его в скобки (или в 3 пары скобок), то ничего не изменится:
# писать так не рекомендуется, но это работает:
pause (5)
pause (((4 + 1)))
И раз ничего не меняется, то и пробел не игнорируется. Где-то он не нужен, а где-то - необходим:
pause(5) # неправильно: pause - команда, а не функция питона, нужен разделительный пробел
pause 5 # правильно
# $ - команда, параметры которой воспринимаются как код питона
$ pause 5 # неправильно: в питоне pause - функция, а не команда
$ pause(5) # правильно
Эта ошибка встречается относительно часто. В том числе и в таком виде:
x = 0 # неправильно: не существует команды x, которой передавались бы параметры "= 0"
$x = 0 # неправильно: не существует команды $x
$ x = 0 # правильно: $ - команда, сообщающая, что её параметры - код для питона
# питон приравняет x к 0
Спец. команда, которая имеет свои внутренние команды или блоки, исполняющиеся последовательно.
Вложенные элементы имеют на 1 табуляцию больше, строка заголовка блока должна оканчиваться двоеточием (:
).
Например:
label start: # основной блок, отступ - 0, в конце - двоеточие
# вложенные в блок label команды, отступ на 1 больше, 0 + 1 = 1
scene bg room
show rn smile
rn "Привет!"
# random.random() даёт случайное число от 0 до 1
if random.random() < 0.5: # вложенный в label _блок_, снова двоеточие в конце
# команды, вложенные в if, отступ на 1 больше, 1 + 1 = 2
show rn normal with dspr
rn "Итак, о чём будет наша новая игра?"