Здесь показаны различия между двумя версиями данной страницы.
Both sides previous revision Предыдущая версия Следущая версия | Предыдущая версия | ||
help:transitions [2013/10/25 13:59] newsash |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | =====Переходы===== | ||
- | |||
- | Переименовать в что-нибудь вида "упорядочивание кода" | ||
- | |||
- | 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] содержит строку "данные". | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | PS: | ||
- | |||
- | При обработке локаций по GOSUB, а также локаций, на которые указывают пункты пользовательского меню и системные переменные ($COUNTER, $USERCOM, $ONGLOAD, $ONGSAVE, $ONNEWLOC, $ONACTSEL, $ONOBJSEL, $ONOBJADD, $ONOBJDEL), учитываются базовые описания и действия на локациях (при отсутствии действий с такими же названиями - к текущим действиям добавляются базовые действия обрабатываемой локации, базовое описание локации добавляется к текущему основному описанию). Аналогично, при вызовах XGOTO, к текущему основному описанию добавляется базовое описание локации, на которую произошёл переход. | ||
- | |||
- | FUNC([$выражение],[параметр 1],[параметр 2], ...) - обработка локации с названием [$выражение]. Указанные параметры передаются в массиве ARGS. Результат функции равен значению $RESULT при возврате строкового значения или RESULT при возврате числового значения. Если при обработке локации были установлены и RESULT, и $RESULT, то предпочтение отдаётся строковому значению. После обработки локации предыдущие значения ARGS и RESULT восстанавливаются. Примеры: | ||
- | PL 4 + FUNC('функция') - обработка локации "функция" как функции. Массив ARGS пуст. Результат передается через $RESULT или RESULT, в зависимости от кода обрабатываемой локации. | ||
- | PL FUNC($name, 1) * 78 - обработка локации с названием в $name как функции. ARGS[0] равен 1. | ||
- | MSG "text" + FUNC($name, "строка", 2) - обработка локации с названием в $name как функции. $ARGS[0] содержит строку "строка", ARGS[1] равен 2. | ||