Инструменты пользователя

Инструменты сайта


help:inputs

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следущая версия
Предыдущая версия
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|Вперёд:​ Работа с файлами игр, использование модулей]]
  
help/inputs.1381396823.txt.gz · Последние изменения: 2013/10/10 13:20 (внешнее изменение)