Внимание!!! В данной версии руководства присутствуют неточности в определениях чисел. Временами рациональные, вещественные и натуральные числа перепутаны и называются неправильно. Если вы математик, вы должны испытывать справедливый гнев. Сам знаю, это кощунство. Постараюсь исправить. Если нашли ошибку в определениях, сообщите адрес страницы, заголовок, под которым расположено неверное определение числа и, желательно, фрагмент текста. Заранее благодарен и прошу прощения.
Сопроводительный текст и инструкции для пользования библиотекой.
Подключение и использование
Предполагается, что Вы читали справку по QSP, пробовали писать игры и уже знаете, что такое локации, подпрограммы (процедуры) и функции, чем отличаются текстовые и числовые переменные, что есть аргументы и для чего они нужны.
Чтобы использовать функции библиотеки при написании своей игры, сделайте следующее:
скачайте архив с библиотекой отсюда, и распакуйте в папку, где лежит ваша игра. В папке с вашей игрой должна появиться папка "lib".
В своей игре на самой первой локации, в поле "выполнить при посещении" введите
addqst 'lib\easy.math.qsp'
Если планируется использование библиотеки в играх на Quest Navigator необходимо так же прописать такую строку:
$AVS_PLAYERTYPE='QN'
теперь Вы можете пользоваться функциями библиотеки.
Все функции библиотеки вызываются с помощью ключевого слова
FUNC( ) - для получения числовых значений, и
$FUNC( ) - для получения текстовых значений.
Исключением являются функции, результат которых записывается в массив. Такие функции вызываются оператором GOSUB, или GS.
$FUNC('#fnct#',$args[0],$args[1],$args[2],$args[3],$args[4],$args[5],$args[6],$args[7],$args[8])
Аргументы могут быть текстовыми или числовыми в зависимости от требований и назначения функции.
Библиотека работает с переменными, имена которых включают сочетание easy_math, чтобы избежать пересечений с именами переменных, которые Вы используете в своих играх.
Все переменные, использующиеся функциями, после - уничтожаются.
Если результат работы функции помещается в массив, одним из параметров функции указывается имя массива, в который должен быть помещён результат. Имена массивов, передаваемые в аргументах функций, должны записываться по общим правилам записи имён переменных для плеера: текстовые массивы - с символом $ перед именем, числовые - без символа $ перед именем. Само имя не должно содержать символа $, и других запрещённых символов.
История версий
Просмотреть историю версий
Функции
-
Операции над целыми числами
- #even# - округление целых чисел до указанной разрядности
- #sum# - подсчёт суммы всех элементов массива.
- #raz# - получение разрядности целого числа
- #^# - возведение целого числа в степень.
- #-# - модуль от разности. c=|a-b|
-
Логические операции
- #add# - "логическое" сложение
- #dev# - "логическое" вычитание
- #rtp# - перестановка значений
-
Операции над текстом
- #zero# - генерирует строку одинаковых символов
- #rndstr# - генерирует строку случайных символов
- #chk.obj.word# - производит поиск предмета в "инвентаре"
- #chk.array.word# - производит поиск элемента массива, содержащего строку, соответствующую регулярному выражению.
- #str.inArray# - из блока текста выбирает все строки между указанными разделителями и помещает их в указанный массив.
- #widetrim# - удаление прилегающих пробелов, символов табуляции и переводов строк, или символов преформатирования.
- #str.thin# - разрежение строки строкой-разделителем.
-
Операции над вещественными (дробными) числами
- #dz# - отсечение нулей в дробной части числа
- #indiv# - рациональное частное от деления двух целых чисел
- #undiv# - превращает рациональное число в целое
- #razdiv# - получает разрядность дробной части числа
- #rounddiv# - округляет рациональное число.
- #+# - вычисление суммы рациональных чисел.
- #*# - вычисление произведения рациональных чисел.
- #:# - вычисление частного от деления рациональных чисел.
- #sim# - сравнение рациональных чисел.
- #sqrt# - вычисление корня квадратного.
- #invert# - инвертирование числа.
-
Операции над шестнадцатеричными числами
- #hex-dec# - перевод из шестнадцатеричной системы в десятеричную
- #dec-hex# - перевод из десятеричной системы в шестнадцатеричную
- #dec-col# - превращает десятеричное число в шестнадцатеричное
- #+col# - изменение цвета, записанного в шестнадцатеричном RGB.
- #col-rgb# - преобразование цвета из формата RRGGBB в формат rgb понятный QSP.
- #col-inv# - инвертирование цвета в формате RRGGBB, т.е. преобразование цвета к совершенно противоположному.
-
Операции над массивами
- #array.rand# - заполнение элементов массива случайными числами
- #array.strt# - заполнение элементов массива подряд идущими числами.
- #array.prnt# - вывод содержимого всех элементов массива в виде текста
- #array.prnt.few# - вывод содержимого нескольких массивов.
- #array.sort# - многофункциональная сортировка содержимого массива.
- #array.rstd# - перетасовка элементов массива в соответствии с таблицей перестановки.
- #array.dsrt# - операция обратная сортировке.
- #array.simp# - сравнение содержимого двух массивов.
- #array.clr# - удаление всех элементов массива, соответствующих указанному значению.
- #array.srch# - поиск максимального или минимального значения числового массива по указанной области и в заданных пределах.
- #array.ins# - вставка элемента в массив со сдвигом ячеек вправо.
-
Вспомогательные функции
- get.word.inPos - из строки вида aaa|bbb|ccc|...|yyy|zzz вычленяется подстрока, стоящая в указанной позиции.
- get.tag.num - получает значение одиночного тега.
- get.tag.cont - получает значение сдвоенного тега.
- kill.var.olegus - процедура, нагло национализированная у Olegus'а. Удаляет элемент массива по его текстовому индексу.
-
Работа с координатной сеткой
- #coords.get# - определяет координаты ячейки по текущему номеру ячейки.
Перспективы
Библиотека будет пополняться новыми функциями по мере необходимости, и если существование функции хоть как-то оправдано. Некоторые функции на сегодняшний день сделать невозможно - они будут либо слишком сложны, либо заметно снизят быстродействие игры. Вероятно, некоторые математические операции очень скоро будут встроены непосредственно в движок плеера, и необходимость в них отпадёт. Такие функции будут исключаться из последующих версий библиотеки. По возможности, алгоритмы будут упрощены и разгружены, а так же будут достраиваться необходимые для работы с функциями параметры.