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

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


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

help:organizing

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


Назад: Условные выражения

Упорядочивание кода и циклы

  • GOSUB [$локация],[параметр 1],[параметр 2], …
  • GS [$локация],[параметр 1],[параметр 2], … - обработка локации с названием [$локация].
    • Основное описание и список действий локации добавляются к описанию и действиям старой локации.
    • Происходит выполнение операторов в поле "Выполнить при посещении"
    • Переданные параметры хранятся в массиве ARGS. Максимальное количество параметров - 91).
    • Затем продолжение выполнения программы со следующей команды после GS/GOSUB.
    • Примеры:
      !обработка локации "ход". Массив ARGS пуст.
      GS 'ход'
      
      !обработка локации с названием из переменной $loc
      !Передаётся один параметр - ARGS[0] равен 1.
      GS $loc,1
      
      !обработка локации "ход" с передачей 3-х параметров. 
      ! $ARGS[0] = $var (значению), ARGS[1] = 2, 
      ! $ARGS[2] = "данные". Обратите внимание на символы '$'.
      GS 'ход',$var,2,'данные'
      
  • FUNC([$локация],[параметр 1],[параметр 2], …) - обработка локации с названием [$локация] аналогично оператору GS (GOSUB), но с возвращением значения.
    • Основное описание и список действий локации добавляются к описанию и действиям старой локации.
    • Происходит выполнение операторов в поле "Выполнить при посещении"
    • Переданные параметры хранятся в массиве ARGS. Максимальное количество параметров - 92).
    • Результат функции равен значению $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.
      

EXIT - завершение выполнения текущего кода (преждевременный выход из подпрограммы / обработчика какого-либо события…).

JUMP [$выражение] - переход в текущем коде (при обработке локации / выбора действия) на метку [$выражение]. Метка на локации обозначается как ":[название метки]". После описания метки (через "&") могут идти операторы. Если интерпретатор находит случайную метку, то он её просто игнорирует. Например:

jump 'КонеЦ'

p 'Это сообщение не будет выведено'

:конец

p 'А это сообщение пользователь увидит'

С помощью оператора "JUMP" можно организовывать циклы:

s=0

:loop

if s<9:

s=s+1

pl s

jump 'LOOP'

end

p 'Всё!'

Оператор "JUMP" также полезен во время отладки квеста, чтобы "обойти" группу операторов, которые временно не нужны.

1) , 2) 10 включая имя локации
help/organizing.1383284253.txt.gz · Последние изменения: 2013/11/01 09:37 (внешнее изменение)