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

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


help:inputs

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:inputs [2013/11/07 15:35]
newsash
help:inputs [2024/10/14 12:41] (текущий)
aleks_versus
Строка 1: Строка 1:
 [[help:​html|Назад:​ HTML]] [[help:​html|Назад:​ HTML]]
-=====Ввод текста игроком===== 
  
-Ввод текста игроком ​может быть двух видов: __//​строка//​__ ввода текста и //​__диалоговое окно__//​ для ввода.\\  +====== ​Ввод текста игроком ​======
-Строку ввода рекомендуется использовать только если требуется ввод текста много раз подряд (например,​ при реализации парсерной игры).+
  
-====Строка ввода====+Ввод ​текста игроком можно сделать двумя способами:​ использовать строку ввода текста,​ либо диалоговое окно для ​ввода.
  
-  * **SHOWINPUT** //​[#​выражение]// - если значение выражения отлично от 0, то показывает строку ввода, иначе скрывает её. +Рекомендуется использовать диалоговое окно, кроме ​тех случаев, в которых требуется ​вводить текст много ​раз подряд,​ например, при реализации парсерной игры - в таких случаях рекомендуется ​использовать строку ввода.
-  * **USER_TEXT** ​или ​**USRTXT** - возвращают текст, ​находящийся ​в строке ввода. +
-  * **CMDCLEAR** ​или **CMDCLR** - очистка строки ввода. +
-  * См. [[service_locations|$USER_COM]]+
  
-====Диалоговое ​окно====+===== Операторы и функции для работы со строкой ввода =====
  
-**INPUT(**//​[$текст]//**)** - выводит окно ввода ​с приглашением //[екст]//.\\  +  ​''​%%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%%''​ — данная функция выводит на экран диалоговое окно с указанным текстом,​ а затем возвращает интерпретатору введённый игроком текст, либо ''​%%""​%%''​ (пустая строка),​ если была нажата кнопка "​**Отмена**"​. Общая запись:​
  
 +<sxh qsp>
 +$INPUT([$текст])
 +</​sxh>​
  
 +, где ''​%%[$текст]%%''​ — это приглашение в диалоговом окне, которое видит игрок. Например:​
  
 +<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.1383838527.txt.gz · Последние изменения: 2013/11/07 19:35 (внешнее изменение)