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