Эквиваленты операторов Ren'Py в языке программирования Python (Statement Equivalents)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

Каждый оператор 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" на английском языке.


На главную страницу Официальная документация движка Вернуться к началу статьи