Условные выражения и переходы |
Содержание Previous Next |
IF [#выражение]:[оператор1] & [оператор2] & ... ELSE [оператор3] & [оператор4] & ... - если [#выражение] верно (не равно 0), то выполнить заданные операторы до ключевого слова "ELSE", иначе выполнить операторы после "ELSE". Если ключевое слово "ELSE" не указано, то при верном значении [#выражение], выполняются все операторы, находящиеся после символа ":". Примеры:
if ((a+b)/c)=45+54 or (b<5 or c>45) and no obj 'лопата' and $f=$vvv+'RRRRR':p 'OK' & goto 'Next' if был_здесь[$curloc]:exit if a<3:jump 'sss' if $имя = '':msg 'Введите имя!' & jump 'ввод' if a+b=2:c=30 & gt 'next' else c=10
Также см. раздел "Многострочные IF / ACT".
EXIT - завершение выполнения текущего кода (преждевременный выход из подпрограммы / обработчика какого-либо события...).
JUMP [$выражение] - переход в текущем коде (при обработке локации / выбора действия) на метку [$выражение]. Метка на локации обозначается как ":[название метки]". После описания метки (через "&") могут идти операторы. Если интерпретатор находит случайную метку, то он её просто игнорирует. Например:
jump 'КонеЦ' p 'Это сообщение не будет выведено' :конец p 'А это сообщение пользователь увидит'
С помощью оператора "JUMP" можно организовывать циклы:
s=0 :loop if s<9: s=s+1 pl s jump 'LOOP' end p 'Всё!'
Оператор "JUMP" также полезен во время отладки квеста, чтобы "обойти" группу операторов, которые временно не нужны.
GOSUB [$выражение],[параметр 1],[параметр 2], ... или GS [$выражение],[параметр 1],[параметр 2], ... - обработка локации с названием [$выражение]. Базовое описание локации добавляется к текущему описанию, базовые действия добавляются к текущим действиям, и происходит выполнение операторов в поле "Выполнить при посещении", затем возврат на исходную строку (продолжение выполнения программы). Переданные параметры хранятся в массиве ARGS. После обработки локации предыдущие значения ARGS восстанавливаются. Примеры:
GS 'ход' - обработка локации "ход". Массив ARGS пуст. GS $loc,1 - обработка локации, название которой хранится в $loc с передачей одного параметра. ARGS[0] равен 1. GS 'ход',$var,2,'данные' - обработка локации "ход" с передачей 3-х параметров. $ARGS[0] равен значению $var, ARGS[1] равен 2, $ARGS[2] содержит строку "данные".
GOTO [$выражение],[параметр 1],[параметр 2], ... или GT [$выражение],[параметр 1],[параметр 2], ... - переход на локацию с названием [$выражение]. Поле основного описания локации, а также список текущих действий заменяются описанием и действиями новой локации. Переданные параметры хранятся в массиве ARGS. Примеры:
GT 'локация' - переход на локацию "локация". Массив ARGS пуст. GT 'локация',1,'данные' - переход на локацию "локация" с передачей 2-х параметров. ARGS[0] равен 1, $ARGS[1] содержит строку "данные".
См. также локацию-обработчик перехода на новую локацию.
XGOTO [$выражение],[параметр 1],[параметр 2], ... или XGT [$выражение],[параметр 1],[параметр 2], ... - отличается от "GOTO / GT" тем, что при переходе не очищается поле основного описания локации, а базовое описание новой локации добавляется к текущему основному описанию. Тем не менее, список действий заменяется действиями новой локации. См. также локацию-обработчик перехода на новую локацию.
|