Эквиваленты операторов Ren'Py в языке программирования Python (Statement Equivalents)
Каждый оператор Ren'Py имеет эквивалент в языке программирования Python. Обычно он состоит из функции Python, но может также состоять из шаблона вызовов Python, которые выполняют действие, эквивалентное оператору.
Диалог (Dialogue)[править | править код]
Оператор say в Ren'Py эквивалентен вызову объекта Character в качестве функции. Следующий код дважды отображает одну и ту же строку:
e "Привет, мир."
$ e("Привет, мир.")
Чтобы отобразить повествование таким же образом, следует использовать персонажа narrator. При вызове персонажа можно указать именованный аргумент interact. Когда interact принимает значение False, Ren'Py отобразит диалоговое окно персонажа, а затем вернётся до выполнения взаимодействия.
Эта эквивалентность персонажей и функциональных объектов работает и в другом направлении. Можно объявить функцию Python, а затем использовать эту функцию вместо объекта Character. Например, следующая функция использует переменную для выбора между двумя персонажами:
define lucy_normal = Character("Люси")
define lucy_evil = Character("Злая Люси")
init python:
def l(what, **kwargs):
if lucy_is_evil:
lucy_evil(what, **kwargs)
else:
lucy_normal(what, **kwargs)
label start:
$ lucy_is_evil = False
l "Обычно я чувствую себя вполне нормально."
$ lucy_is_evil = True
l "Но иногда я очень злюсь!"
Функция, используемая таким образом, должна либо игнорировать неизвестные именованные аргументы, либо передавать их функции Character. Это позволит продолжить работу игры, если Ren'Py добавит дополнительные именованные аргументы к вызовам персонажей.
- renpy.say(who, what, *args, **kwargs)
- Эквивалент оператора say.
- who
- Либо персонаж, который будет что-то говорить, None для рассказчика, либо строка, задающая имя персонажа. В последнем случае say() используется для создания говорящего персонажа.
- what
- Строка, задающая строку с тем, что говорят. В ней выполняются процентные замены.
- interact
- Если принимает значение True, Ren'Py ожидает ввод от игрока при отображении диалога. Если принимает значение False, Ren'Py отображает диалог, но не выполняет взаимодействие. Это передаётся в качестве именованного аргумента.
- Эта функция редко используется, поскольку следующие три строки эквивалентны:
e "Привет, мир." $ renpy.say(e, "Привет, мир.") $ e("Привет, мир.")
Меню выбора (Choice Menus)[править | править код]
Оператор menu имеет эквивалентную функцию в Python.
- renpy.display_menu(items, interact=True, screen="choice")
- Отображает меню для пользователя. items должен быть списком двухэлементных кортежей. В каждом кортеже первый элемент представляет собой текстовую метку, а второй элемент – значение, которое возвращается, если этот элемент выбран. Если принимает значение None, первый элемент используется в качестве заголовка меню.
- Эта функция принимает много аргументов, из которых только некоторые задокументированы. За исключением items, все аргументы должны быть представлены как именованные аргументы.
- interact
- Если принимает значение False, меню отображается, но никакого взаимодействия не происходит.
- screen
- Название экрана, используемого для отображения меню.
Обратите внимание, что большинство игр, созданных на Ren'Py, не используют заголовки меню, вместо этого они используют narration:
$ narrator("В каком направлении вы хотели бы пойти?", interact=False)
$ result = renpy.display_menu([ ("Восток", "восток"), ("Запад", "запад") ])
Отображение изображений (Displaying Images)[править | править код]
Операторы image, scene, show и hide имеют эквивалентную функцию в Python.
renpy.get_at_list(name, layer=None)
- Возвращает список преобразований, применяемых к изображению с тегом name на layer. Возвращает пустой список, если никакие преобразования не применяются, или None, если изображение не отображается.
- Если layer принимает значение None, для данного тега используется слой по умолчанию.
renpy.hide(name, layer=None)
- Скрывает изображение из слоя. Эквивалент оператора hide в Python.
- name
- Имя изображения, которое нужно скрыть. Используется только тег изображения и любое изображение с тегом скрыто (точное имя не имеет значения).
- layer
- Слой, на котором работает эта функция. Если принимает значение None, используется слой по умолчанию, связанный с тегом.
renpy.image(name, d)
- Определяет изображение. Эта функция является эквивалентом оператора image в Python.
- name
- Имя изображения для отображения, строка.
- d
- Отображается для связи с этим именем изображения.
- Функция может быть запущена только из блока инициализации. Запуск этой функции после начала игры является ошибкой.
renpy.scene(layer='master')
- Удаляет все отображаемые элементы из layer. Эквивалентно оператору scene, когда для оператора scene не задано изображение для отображения.
- Оператор scene эквивалентен вызову renpy.scene, за которым следует вызов renpy.show(). Например:
scene bg beach
эквивалентно:
$ renpy.scene() $ renpy.show("bg beach")
renpy.show(name, at_list=[],layer='master', what=None, zorder=0, tag='None', behind=[])
- Показывает изображение на слое. Это программный эквивалент оператора show.
- name
- Имя изображения для отображения, строка.
- at_list
- Список преобразований, которые применяются к изображению. Эквивалент свойства at.
- layer
- Строка, дающая название слоя, на котором будет отображаться изображение. Эквивалент свойства onlayer. Если принимает значение None, используется слой по умолчанию, связанный с тегом.
- what
- Если принимает значение не None, то это отображаемый объект, которое будет отображаться вместо просмотра изображения. Эквивалент оператора show expression. Когда задан параметр what, name можно использовать для привязки тега к изображению.
- zorder
- Целое число, эквивалентное свойству zorder. Если принимает значение None, zorder сохраняется, если он существует, иначе устанавливается на 0.
- tag
- Строка, используемая для указания тега изображения показанного изображения. Эквивалент свойства as.
- behind
- Список строк с тегами изображений, за которыми это изображение отображается. Эквивалент свойства behind.
renpy.show_layer_at(at_list, layer='master', reset=True)
- Python-эквивалент слоя show layer в операторе at_list.
- reset
- Если принимает значение True, состояние преобразования сбрасывается в начало, когда оно отображается. Если принимает значение False, состояние преобразования сохраняется, позволяя новому преобразованию обновлять это состояние.
Переходы (Transitions)[править | править код]
Эквивалентом оператора with является функция renpy.with_statement.
renpy.with_statement(trans, always=False)
- Вызывает переход. Это эквивалент оператора with в Python.
- trans
- Переход.
- always
- Если принимает значение True, переход всегда выполняется, даже если пользователь отключил переходы.
- Эта функция возвращает значение True, если пользователь решил прервать переход, иначе значение False.
Оператор jump (Jump)[править | править код]
Эквивалентом оператора jump является функция renpy.jump.
renpy.jump(label)
- Вызывает завершение текущего оператора и управление переходит к заданной метке.
Оператор call (Call)[править | править код]
Эквивалентом оператора call является функция renpy.call.
renpy.call(label, *args, **kwargs)
- Приводит к завершению текущего оператора Ren'Py и переходу на метку. Когда прыжок возвращается, управление будет передано оператору, следующему за текущим оператором.
- from_current
- Если принимает значение True, управление вернется к текущему оператору, а не к оператору после текущего оператора. Это приведет к тому, что текущий оператор будет выполнен дважды. Это должно быть передано как именованный аргумент.
renpy.return_statement(value=None)
- Вызывает возврат Ren'Py из текущего вызова уровня Ren'Py.
Источник[править | править код]
Статья "Statement Equivalents" на английском языке.
На главную страницу | Официальная документация движка | Вернуться к началу статьи |