Здесь показаны различия между двумя версиями данной страницы.
| 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. | ||