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

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


Боковая панель

help:inputs

Это старая версия документа.


Назад: HTML

Ввод текста игроком

Ввод текста игроком можно сделать двумя способами: использовать строку ввода текста, либо диалоговое окно для ввода.

Рекомендуется использовать диалоговое окно, кроме тех случаев, в которых требуется вводить текст много раз подряд, например, при реализации парсерной игры - в таких случаях рекомендуется использовать строку ввода.

Строка ввода

  • 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 isnum($text)<>-1 or $text="":
	! предлагаем игроку снова ответить на вопрос:
	jump 'enter_text'
else
	age=val($text)
end

Вперёд: Работа с файлами игр, использование модулей

help/inputs.1672748803.txt.gz · Последние изменения: 2023/01/03 12:26 — aleks_versus