Ввод текста игроком можно сделать двумя способами: использовать строку ввода текста, либо диалоговое окно для ввода.
Рекомендуется использовать диалоговое окно, кроме тех случаев, в которых требуется вводить текст много раз подряд, например, при реализации парсерной игры - в таких случаях рекомендуется использовать строку ввода.
SHOWINPUT
— данный оператор управляет отображением строки ввода на экране. Общая запись: SHOWINPUT [#выражение], где
[#выражение]
— это число. Обычно используются значения 0 и 1. Если значение выражения [#выражение]
отлично от нуля, строка ввода отображается. Если значение выражения [#выражение]
равно нулю, строка ввода скрыта. Примеры: showinput 1 & ! показывает строку ввода showinput 0 & ! скрывает строку вводаДля удобства чтения кода можно заранее определить переменные
on
и off
и использовать их: on, off = 1, 0 showinput on & ! показывает строку ввода showinput off & ! скрывает строку ввода
CMDCLEAR
— оператор очистки строки ввода. Имеет краткую форму CMDCLR
. Удаляет весь текст из строки ввода. cmdclear
$USER_TEXT
— данная функция в ЛЮБОМ месте игры возвращает текст, который находится в строке ввода (поле ввода). Имеет краткую форму $USRTXT
. Пример использования совместно с обработчиком строки ввода можно посмотреть в разделе "Служебные локации". Пример действия, по нажатию на которое в окно дополнительного описания будет выводиться текст, введённый в строку ввода: act "Что я написал?": pl 'Я написал: "<<$user_text>>".'
$INPUT
— данная функция выводит на экран диалоговое окно с указанным текстом, а затем возвращает интерпретатору введённый игроком текст, либо ""
(пустая строка), если была нажата кнопка "Отмена". Общая запись:
$INPUT([$текст])
, где [$текст]
— это приглашение в диалоговом окне, которое видит игрок. Например:
$name = $input('Как звать тебя, герой?')
При выполнении данной команды на экране появится диалоговое окно с текстом "Как звать тебя, герой?", а выполнение остального кода приостановится, пока игрок не провзаимодействует с диалоговым окном.
Игрок может ввести или не ввести текст, и нажать кнопки "ОК" или "Отмена". Если игрок ввёл текст и нажал кнопку "ОК", функция $INPUT
вернёт переменной $name
введённый игроком текст. Во всех остальных случаях после закрытия диалогового окна функция вернёт пустую строку (""
).
Другие примеры:
! Вопрос с одним правильным ответом. if $input('Что приходит после тьмы?')='свет': msg 'Все верно.' else msg 'Ответ не верный.' end ! Пример реализации вопроса с несколькими вариантами ответа из которых любой будет правильным. $answer=$trim($lcase($input('Ответить'))) if instr($answer,'красный') or instr($answer,'желтый') or instr($answer,'зеленый'): gt 'win' ! Введя красный или зеленый ил желтый произойдет переход на локацию 'win'
Допустимо, но не одобряется, использовать функцию для возвращения числовых значений:
INPUT([$приглашение])
Это может привести к различным ошибкам в игре, если игрок введёт в диалоговом окне не только цифры. Например:
age=input('Сколько вам лет?')
Если игрок введёт вместо числа строку "24 года
", плеер выдаст ошибку 101 "Несоответствие типов данных". Подобные ситуации должен предусматривать автор игры, а значит правильно будет озаботиться проверкой введённого значения уже после того, как функция $INPUT
будет выполнена.
:enter_text ! предлагаем игроку ответить на вопрос ! и присваиваем введённый текст переменной: $text=$input('Сколько вам лет?') ! если во введённом тексте содержатся не только ! цифры, либо игрок не ввёл ответ: if $text="" or no isnum($text): ! предлагаем игроку снова ответить на вопрос: jump 'enter_text' else age=val($text) end