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

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

Writing /var/www/qsp.su/public_html/wiki/data/meta/access.log failed

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

help:coding

Назад: Выражения

Программный код

  • Команды выполняются одна за другой, последовательно.
  • Новая команда пишется на следующей строке после предыдущей.
    • Для лучшей читаемости можно разбивать код на части пустыми строками.
      яблоко = 1
      груша = 1
      
      *pl 'Яблок' + яблоко
      *pl 'Груш' + груша
      
  • При необходимости можно написать несколько команд в одну строку.
    • Между командами ставится знак '&'.
    • Пример:
      '<a href="EXEC: яблоко += 1 & GT $CURLOC">яблоко</a>'
      !При нажатии на ссылку выполнится код:
      яблоко += 1
      GT $CURLOC
    • Без необходимости делать так не рекомендуется, так как:
      • Код может стать трудночитаемым
      • Повышается вероятность допустить баг.
  • Внутреннюю часть многострочных операторов рекомендуется сдвигать вправо 2-4 пробелами.
    • Это никак не влияет на выполнение, но делает код более читаемым:
      IF яблоки=0 :
        ADDOBJ 'Яблоко'
        яблоки = 1
      END
      
  • Крайне редко для повышения читаемости кода приходится разбивать строку на несколько.
    • Вместо разбиения строки рекомендуется видоизменить код так, чтобы это не требовалось.
    • Строка будет разбита в коде на части, но будет восприниматься интерпретатором как единая.
    • Чтобы следующая строка считалась частью текущей, нужно в конце строки дописать ' _' (пробел и символ подчёркивания):
      if a<5 and n-b>4+5+h/7*2 or t=4: p 'TTTTTTTTT' & cla & $f='Text Variable' & goto 'FFFF'
      
      равнозначно
      if a<5 and _
          n-b>4+5+h/7*2 or  _
          t=4: p 'TTTTTTTTT' _
        & cla & $f='Text Variable' _
        & goto 'FFFF'
      
    • Группа строк, разделённых " _", считается одной строкой (сообщения об ошибках также выводятся с учётом того, что это одна строка).
    • После OR стоит не один, а два пробела - один пробел расходуется на " _", получилось бы "ort=4" вмето "or t=4".
      • Исправлено: в более новых версиях (Quest Navigator, возможно даже в AeorQSP) пробел сохраняется.

Комментарии

Оператор комментария (символ '!') служит для комментирования кода и позволяет оставлять "заметки на полях", которые помогут впоследствии ориентироваться в коде. Комментарии игнорируются интерпретатором.

  !Однострочный комментарий
  яблоки = 0
!'Многострочный
комментарий'
яблоки = 1
  сыр = 5 &  ! А здесь"комментарий начинается
  в той же строке, но" заканчивается 'сильно
  позже'. Во всём виноваты {кавычки и скобки
  }Кстати:
  яблоки=0
 !'Комментарии рекомендуется писать всё-таки
в отдельных строках, а не как с "сыром"'

Примечание: при выводе ошибок многострочные комментарии считаются интерпретатором за одну строку.

Операторы и функции

Оператор - ключевое слово (команда языка QSP), выполняющее какое-либо действие. Оператор может иметь параметры (аргументы), которые задаются выражениями. Операторы не возвращают результат выполнения.
Как правило, операторы меняют состояние игры.

!'Общий вид вызова оператора
    имя_оператора аргумент1, аргумент2, ...
или
    имя_оператора (аргумент1, аргумент2, ...)
'
!Примеры вызовов операторов:
ADDOBJ 'ключ','pics/key.png'
ADDOBJ ('ключ','pics/key.png')
PL ('текст')
CLEAR()

Функция - ключевое слово, которое используется для того, чтобы что-нибудь узнать. Например, сколько предметов игрок несёт в рюкзаке. Для этого, в коде мы указываем функцию, и необходимые для расчёта параметры (аргументы функции). Результат, "посчитанный" этой функцией, подставляется на её место в выражении. На языке программистов это называется "функция была вызвана и вернула значение".
Как правило, при вызове функции состояние игры не меняется.

!Примеры вызовов функций:
X = MAX(1, 2, 4)
A = RAND(4)
B = COUNTOBJ 
PL STR(43)
PL $STR(43)
!Последние два выражения эквивалентны

Примечание: при использовании функций возвращающих текстовое значение настоятельно рекомендуется приписывать перед именем функции символ '$' для улучшения читаемости кода.

Примечание: Максимальное количество аргументов равно 10

Базовые функции

  • QSPVER - возвращает версию библиотеки интерпретатора в формате "X.Y.Z".
  • CURLOC - возвращает название текущей локации.
  • Математические функции
    • RAND([#выр1],[#выр2]) - возвращает случайное число между числами [#выр] и [#выр2].
      • Параметр [#выр2] может отсутствовать, при этом он принимается равным 0.
        • В более поздних версиях библиотеки [#выр2] по умолчанию принимается за 1.
      • Примеры:
        RAND(1,4) &! вернёт случайное значение от 1 до 4
        RAND(4,1) &! вернёт случайное значение от 1 до 4
        RAND(1000) &! вернёт случайное значение от 0(1) до 1000
        RAND 1000 &! вернёт случайное значение от 0(1) до 1000
    • RND - возвращает случайное значение от 1 до 1000.
    • MAX([выр1],[выр2],) - возвращает максимальное из значений выражений-аргументов.
      • Если передан один аргумент, то считается, что указано имя массива.
      • Примеры:
        MAX(1,2,5,2,0) &! вернёт 5
        MAX(a,b,c) &! вернёт максимальное из значений переменных a,b,c
        MAX('aa','ab','zz') &! вернёт 'zz'
        MAX('a') &! вернёт максимальное из значений элементов массива "a"
        MAX('$b') &! вернёт максимальное из значений элементов массива "$b"
    • MIN([выр1],[выр2],) - возвращает минимальное из значений выражений-аргументов.
      • Если передан один аргумент, то считается, что указано имя массива.

Вперёд: Массивы

help/coding.txt · Последние изменения: 2015/04/08 00:53 (внешнее изменение)