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

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


help:coding

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:coding [2015/04/05 15:16]
204.77.45.220 uvwlIl4RWn1
help:coding [2015/04/08 00:53] (текущий)
Строка 1: Строка 1:
-Check that off the list of things I was <a href="http://mtmrqlbst.com">conusfed</​a> ​about.+[[help:​expressions|Назад:​ Выражения]] 
 + 
 +=====Программный код===== 
 + 
 +  * Команды выполняются одна за другой,​ последовательно. 
 +  * Новая команда пишется на следующей строке после предыдущей. 
 +    * Для лучшей читаемости можно разбивать код на части пустыми строками.<​sxh qsp> 
 +яблоко = 1 
 +груша = 1 
 + 
 +*pl '​Яблок'​ + яблоко 
 +*pl '​Груш'​ + груша 
 +</​sxh>​ 
 +  * При необходимости можно написать несколько команд в одну строку. 
 +    * Между командами ставится знак '​**&​**'​. 
 +    * //​Пример://<​sxh qsp> 
 +'<a href="EXECяблоко += 1 & GT $CURLOC">​яблоко<​/a>'​ 
 +!При нажатии на ссылку выполнится код: 
 +яблоко += 1 
 +GT $CURLOC</sxh> 
 +    * Без необходимости делать так __не__ рекомендуется,​ так как: 
 +      * Код может стать трудночитаемым 
 +      * Повышается вероятность допустить [[баг|баг]]. 
 +  * Внутреннюю часть многострочных операторов рекомендуется сдвигать вправо 2-4 пробелами. 
 +    * Это никак не влияет на выполнение,​ но делает код более читаемым:<​sxh qsp> 
 +IF яблоки=0 : 
 +  ADDOBJ '​Яблоко'​ 
 +  яблоки = 1 
 +END 
 +</​sxh>​ 
 +  * Крайне редко для повышения читаемости кода приходится разбивать строку на несколько. 
 +    * Вместо разбиения строки рекомендуется видоизменить код так, чтобы это не требовалось. 
 +    * Строка будет разбита в коде на части, но будет восприниматься интерпретатором как единая.  
 +    * Чтобы следующая строка считалась частью текущей,​ нужно в конце строки дописать **' _'** (пробел и символ подчёркивания):<​sxh qsp> 
 +if a<5 and n-b>​4+5+h/​7*2 or t=4: p '​TTTTTTTTT'​ & cla & $f='​Text Variable'​ & goto '​FFFF'​ 
 +</​sxh>​ равнозначно <sxh qsp> 
 +if a<5 and _ 
 +    n-b>​4+5+h/​7*2 or  _ 
 +    t=4: p '​TTTTTTTTT'​ _ 
 +  & cla & $f='​Text Variable'​ _ 
 +  & goto '​FFFF'​ 
 +</​sxh>​ 
 +    * Группа строк, разделённых ​" ​_", считается **//​одной//​** строкой (сообщения об ошибках также выводятся с учётом того, что это одна строка). 
 +    * После **OR** стоит не один, а **//​два//​** пробела - один пробел расходуется на " _", получилось бы "​ort=4"​ вмето "or t=4"​. 
 +      * Исправлено:​ в более новых версиях (//Quest Navigator//,​ возможно даже в //​AeorQSP//​) пробел сохраняется. 
 + 
 +====Комментарии==== 
 + 
 +Оператор комментария (символ '​**!**'​) служит для комментирования кода и позволяет оставлять "​заметки на полях",​ которые помогут впоследствии ориентироваться в коде. Комментарии игнорируются интерпретатором. 
 +<sxh qsp> 
 +  !Однострочный комментарий 
 +  яблоки = 0 
 +!'​Многострочный 
 +комментарий'​ 
 +яблоки = 1 
 +  сыр = 5 &  ! А здесь"​комментарий начинается 
 +  в той же строке,​ но" заканчивается '​сильно 
 +  позже'​. Во всём виноваты {кавычки и скобки 
 +  }Кстати:​ 
 +  яблоки=0 
 + ​!'​Комментарии рекомендуется писать всё-таки 
 +в отдельных строках,​ а не как с "​сыром"'​ 
 +</sxh> 
 + 
 +**Примечание:​** при выводе ошибок многострочные комментарии считаются интерпретатором за одну строку. 
 + 
 +====Операторы и функции==== 
 +**Оператор** - ключевое слово (команда языка QSP), выполняющее какое-либо действие. Оператор может иметь параметры (аргументы),​ которые задаются выражениями. Операторы не возвращают результат выполнения.\\  
 +Как правило,​ операторы меняют состояние игры. 
 + 
 +<sxh qsp> 
 +!'​Общий вид вызова оператора 
 +    имя_оператора аргумент1,​ аргумент2,​ ... 
 +или 
 +    имя_оператора (аргумент1,​ аргумент2,​ ...) 
 +
 +!Примеры вызовов операторов:​ 
 +ADDOBJ '​ключ','​pics/​key.png'​ 
 +ADDOBJ ('​ключ','​pics/​key.png'​) 
 +PL ('​текст'​) 
 +CLEAR() 
 +</​sxh>​ 
 + 
 +**Функция** - ключевое слово, которое используется для того, чтобы что-нибудь узнать. Например,​ сколько предметов игрок несёт в рюкзаке. Для этого, в коде мы указываем функцию,​ и необходимые для расчёта параметры (аргументы функции). Результат,​ "​посчитанный"​ этой функцией,​ подставляется на её место в выражении. На языке программистов это называется "​функция была вызвана и вернула значение"​.\\  
 +Как правило,​ при вызове функции состояние игры не меняется. 
 + 
 +<sxh qsp> 
 +!Примеры вызовов функций:​ 
 +X = MAX(1, 2, 4) 
 +A = RAND(4) 
 +B = COUNTOBJ  
 +PL STR(43) 
 +PL $STR(43) 
 +!Последние два выражения эквивалентны 
 +</​sxh>​ 
 + 
 +**Примечание:​** при использовании функций возвращающих текстовое значение настоятельно рекомендуется приписывать перед именем функции символ '​**$**'​ для улучшения читаемости кода. 
 + 
 +**Примечание:​** Максимальное количество аргументов равно **10** 
 + 
 +====Базовые функции==== 
 + 
 +  * **QSPVER** - возвращает версию библиотеки интерпретатора в формате "​X.Y.Z"​. 
 +  * **CURLOC** - возвращает название текущей локации. 
 +  * Математические функции 
 +    * **RAND(**//​[#​выр1]//​**,​**//​[#​выр2]//​**)** - возвращает случайное число между числами //​[#​выр]//​ и //​[#​выр2]//​.  
 +      * Параметр //​[#​выр2]//​ может отсутствовать,​ при этом он принимается равным 0. 
 +        * В более поздних версиях библиотеки //​[#​выр2]//​ по умолчанию принимается за 1. 
 +      * //​Примеры://<​sxh qsp> 
 +RAND(1,4) &! вернёт случайное значение от 1 до 4 
 +RAND(4,1) &! вернёт случайное значение от 1 до 4 
 +RAND(1000) &! вернёт случайное значение от 0(1) до 1000 
 +RAND 1000 &! вернёт случайное значение от 0(1) до 1000</​sxh>​ 
 +    * **RND** - возвращает случайное значение от 1 до 1000. 
 +    * **MAX(**//​[выр1]//​**,​**//​[выр2]//​**,​** ...**)** - возвращает максимальное из значений выражений-аргументов. 
 +      * Если передан один аргумент,​ то считается,​ что указано имя массива. 
 +      * //​Примеры://<​sxh qsp> 
 +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"</​sxh> 
 +    * **MIN(**//​[выр1]//​**,​**//​[выр2]//​**,​** ​...**)** - возвращает минимальное из значений выражений-аргументов. 
 +      * Если передан один аргумент,​ то считается,​ что указано имя массива. 
 + 
 +---- 
 +[[help:​arrays|Вперёд:​ Массивы]]
help/coding.txt · Последние изменения: 2015/04/08 00:53 (внешнее изменение)