Ввод текста
С некоторыми ограничениями Ren'Py может запрашивать у пользователя ввод небольшого
количества текста. Этот запрос осуществляется функцией renpy.input(),
которая возвращает введённый текст, позволяя сохранить его в переменной
или обработать иным образом.
В Linux ввод текста ограничен языками, не требующими поддержки методов ввода (IME). Большинство западных языков должны работать, а китайский, японский и корейский, скорее всего, нет.
Функция renpy.input определяется следующим образом:
- renpy.input(default='', allow=None, exclude='{}', length=None, pixel_width=None, screen='input', mask=None, copypaste=True, multiline=False, **kwargs)
Вызов этой функции открывает окно, предлагающее игроку ввести некоторый текст. Она возвращает введённый текст.
- prompt
Строка, содержащая подсказку для отображения игроку.
- default
Строка, задающая исходный текст, который будет редактироваться игроком.
- allow
Если не None, строка, содержащая список символов, которые будут разрешены в тексте.
- exclude
Если не None, если символ присутствует в этой строке, он не разрешён в тексте.
- length
Если не None, должно быть целым числом, задающим максимальную длину вводимой строки.
- pixel_width
Если не None, ввод ограничен этой шириной в пикселях, в шрифте, используемом для отображения текста.
- screen
Имя экрана, который принимает ввод. Если не указан, используется экран
input.- mask
Если не None, односимвольная строка, которая заменяет вводимый текст, отображаемый игроку, например, для скрытия пароля.
- copypaste
Если истинно, разрешено копирование и вставка в это поле ввода.
- multiline
Если истинно, разрешено перемещение каретки на следующую строку.
Если
config.disable_inputравно True, эта функция возвращает только default.Ключевые слова с префиксом
show_передаются на экран с отброшенным префиксом.Из-за ограничений в сторонних библиотеках, на Android и веб-платформе эта функция ограничена буквенными символами.
Игры, использующие renpy.input, часто требуют дальнейшей обработки результата с помощью стандартных функций Python для работы со строками. Например, следующий код запросит у игрока его имя, удалит начальные и конечные пробелы. Если имя пустое, оно будет заменено именем по умолчанию. Наконец, оно отображается пользователю.
define pov = Character("[povname]")
python:
povname = renpy.input("What is your name?", length=32)
povname = povname.strip()
if not povname:
povname = "Pat Smith"
pov "My name is [povname]!"
Здесь длина ввода ограничена 32 символами. Важно протестировать вашу игру с длинными именами, чтобы убедиться, что эти имена не нарушают вёрстку текста. В то же время, слишком короткие поля могут помешать людям ввести предпочитаемое имя.