Содержание

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

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

Выполнение кода в плеере QSP происходит последовательно, команда за командой, сверху вниз и слева направо:

*pl "Первая команда"
*pl "Вторая команда"
*pl "Третья команда"

*pl "Четвёртая команда" & *pl "Пятая команда" & *pl "Шестая команда"

Структура команд

Все команды в QSP составляются по общим принципам:

  {оператор} [значение 1], [значение 2], ..., [значение 20]

Здесь вместо {оператор} может и должен стоять любой оператор QSP из тех, что перечислены в разделе "Ключевые слова. Операторы". Если в команде нет {оператор}, значит на самом деле на этом месте подразумевается неявный оператор.

! здесь используются явные операторы:
*pl "Ехал Грека Через Реку"
addobj "Рак"

! а здесь имеет место неявный оператор:
137 + 294
func('pow', 3, 3)

В качестве значений [значение 1], [значение 2], … ,[значение 20] могут выступать строковые или числовые константы, переменные, значения функций, или целые выражения, а число таких значений зависит от назначения оператора. Например, для оператора *PL может быть указано лишь одно значение, а для оператора ADDOBJ от одного до трёх таких значений. Сами значения перечисляются через запятую.

*pl "Три в кубе это "+func('pow',3,3)+". Да, серьёзно. А ты не верил?"
addobj "Апельсинка", "img/orange.png", 1

Если необходимо, то для удобства чтения кода значения для операторов можно (но не обязательно) помещать в круглые скобки:

pl("Строка текста")
addobj("Отвёртка","img/screwdriver.png",3)

Внимание! В одной команде не может быть более одного оператора! Равно так же не может быть команды совсем без оператора. Если в вашей команде нет оператора, то вы имеете дело с неявным оператором.

Операция присваивания предполагает, что перед именем переменной стоит оператор SET, хотя обычно этот оператор опускают, то есть его тоже можно назвать "неявным":

[имя_переменной] = [значение]

Здесь = — это операция присваивания. Не путайте с операцией сравнения равно.

Порядок записи команд

Вот несколько правил и рекомендаций для корректного написания кода:

Комментарии

Оператор комментария ! служит для комментирования кода и позволяет оставлять "заметки на полях", которые помогут впоследствии ориентироваться в коде. Всё, что следует за оператором комментария, плеер игнорирует.

Поскольку ! — это оператор (не путайте с операцией не равно), если вы пишете его на одной строке с другими командами, нужно обязательно ставить разделитель & (амперсанд) между последней командой и оператором комментария:

! это комментарий в отдельной строке
яблоки = 0 & ! а это комментарий в строке с командой

Исключением из этого правила является установка комментария после двоеточия в многострочном условии, цикле или действии. В этом случае амперсанд не нужен:

act "Взять яблоко": ! многострочное действие
    addobj "Яблоко"
    яблоко += 1
end

Так как весь текст после оператора комментария будет проигнорирован плеером, комментарий надо ставить всегда самым последним в строке из нескольких команд:

! комментарий. Следующие команды не работают: & *pl "Первая команда" & *pl "вторая команда"
*pl "Эта команда работает" & ! а остальные нет & *pl "вторая команда" & *pl "третья команда"
*pl "Эта команда работает" & *pl "и эта работает" & ! а последняя нет & *pl "третья команда"
*pl "Все три" & *pl " команды" & *pl "работают" & ! а это комментарий

Комментарии бывают двух видов: однострочные и многострочные.

Запись констант

Под константами в QSP подразумеваются конкретные числовые или строковые значения. Конкретный кортеж (запись значений в квадратных скобках) тоже можно назвать константой. В следующем примере для операторов вывода текста указаны конкретные значения, это и есть константы:

! вывод на экран числа 137. Можно назвать это число константой.
*pl 137
! вывод на экран строки текста. Эту строку можно назвать константой
*pl "На окошке крошку-мошку ловко ловит лапой кошка"
! выводим на экран кортеж. Кортеж тоже может быть константой
*pl [13, 'unit', 37]

Для записи числовых констант (чисел) используются символы цифр без дополнительных обозначений:

x = 145 & ! 145 здесь - константа
(137+299*2)/11-19 & ! целое выражение из числовых констант

Для записи строковых констант (строк) используются символы, отмечающие начало и конец такой строковой константы. Можно использовать кавычки (" "), апострофы (' '), или фигурные скобки ({ }):

*pl "Это строковая константа"
*pl 'И это строковая константа'
*pl {И даже это}

Более подробно о правилах записи строк в QSP можно почитать в разделе "Строки".

Для записи кортежей используются квадратные скобки:

*pl ['это кортеж', 'если он ', "не присвоен переменной", "его можно считать константой"]

См. также "Именованные константы".

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

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

Как правило, операторы меняют состояние игры.

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

!Примеры вызовов операторов:
ADDOBJ 'ключ','pics/key.png'
ADDOBJ ('ключ','pics/key.png')
PL('текст')
CLEAR()

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

Как правило, при вызове функции состояние игры не меняется. Примеры вызовов функций:

maximum = MAX(1, 2, 4)
случайное_число = RAND(4)
предметов_в_рюкзаке = COUNTOBJ 
PL $STR(43)

В одной команде может быть вызвано несколько функций:

*pl "Случайный предмет: "+$getobj(rand(1,countobj))
bcolor = rgb(func('hex_in_dec','ff'),func('hex_in_dec','34'),func('hex_in_dec','67'))

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

Максимальное число аргументов для операторов и функций в QSP: 20.

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

Математические функции

Вперёд: Циклы