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