Skip to content

AleksVersus/easy.math

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

easy.math v.2.x.x

Библиотека математических функций easy.math для Quest Soft Player.

Разрабатывалась для плееров версий 5.7.0 — это: классический плеер версии 5.7.0, плеер от Seedhartha для Android (до версии 2.3.1 минимум), а так же Quest Navigator версии 0.0.28. Не гарантируется правильная работа на плеерах иных версий. Некоторые функции имеют ограничения на значение числовых аргументов, это связано с используемыми плеером библиотеками. Для разных версий плеера могут быть разные ограничения, поэтому внимательно читайте документацию к плееру, под который разрабатываете игру.

Ветка версий 2.x.x. будет поддерживаться до тех пор, пока не выйдет классический плеер версии 5.8.0, и пока я не допишу игру для плеера версии 5.7.0, затем я сосредоточусь на ветке 3.x.x. Таким образом будут существовать одновременно две версии библиотеки: 2.x.x и 3.x.x. Вариант 2.x.x будет работать и в более старых, и в более новых версиях плеера, а вариант 3.x.x будет работать исключительно в плеерах версии 5.8.0 и выше.

Внимание!!! В версии библиотеки 2.4.0, которая следует за 2.3.14, внесены большие изменения (см. историю версий), и многие функции потеряли обратную совместимость. Управляющие конструкции для многих функций переписаны и приведены к единому виду! Будьте внимательны при обновлении библиотеки, если вы её уже используете!!!

По всем вопросам и предложениям обращаться:

Изначально библиотека создавалась для обеспечения нужд игры МАГИКОН.

Подключение и использование

Предполагается, что Вы читали справку по QSP, пробовали писать игры и уже знаете, что такое локации, подпрограммы (процедуры) и функции, чем отличаются текстовые и числовые переменные, что такое аргументы и для чего они нужны.

Чтобы использовать функции библиотеки при написании своей игры, сделайте следующее:

скачайте архив с библиотекой отсюда, и распакуйте в папку, где лежит ваша игра. В папке с вашей игрой должна появиться папка "lib".

В своей игре на самой первой локации, в поле "выполнить при посещении" введите

addqst 'lib\easy.math.qsp'

Если планируется использование библиотеки в играх на Quest Navigator, подключение библиотеки производится с помощью команды inclib. Так же необходимо выставить значение переменной $AVS_PLAYERTYPE равное '[QN]'

inclib 'lib\easy.math.qsp'
$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, чтобы избежать пересечений с именами переменных, которые Вы используете в своих играх.

Все переменные, использующиеся функциями, после - уничтожаются.

Если результат работы функции помещается в массив, одним из параметров функции указывается имя массива, в который должен быть помещён результат. Имена массивов, передаваемые в аргументах функций, должны записываться по общим правилам записи имён переменных для плеера: текстовые массивы - с символом $ перед именем, числовые - без символа $ перед именем. Само имя не должно содержать символа $, и других запрещённых символов.

История версий

Просмотреть историю версий

Функции

  1. Операции над целыми числами
    • #even# - округление целых чисел до указанной разрядности
    • #sum# - подсчёт суммы всех элементов массива.
    • #raz# - получение разрядности целого числа
    • #^# - возведение целого числа в степень.
    • #-# - модуль от разности. c=|a-b|
  2. Логические операции
    • #add# - "логическое" сложение
    • #dev# - "логическое" вычитание
    • #rtp# - перестановка значений
  3. Операции над текстом
    • #zero# - генерирует строку одинаковых символов
    • #rndstr# - генерирует строку случайных символов
    • #chk.obj.word# - производит поиск предмета в "инвентаре"
    • #chk.array.word# - производит поиск элемента массива, содержащего строку, соответствующую регулярному выражению.
    • #str.inArray# - из блока текста выбирает все строки между указанными разделителями и помещает их в указанный массив.
    • #widetrim# - удаление прилегающих пробелов, символов табуляции и переводов строк, или символов преформатирования.
    • #str.thin# - разрежение строки строкой-разделителем.
  4. Операции над вещественными (дробными) числами
    • #dz# - отсечение нулей в дробной части числа
    • #indiv# - рациональное частное от деления двух целых чисел
    • #undiv# - превращает рациональное число в целое
    • #razdiv# - получает разрядность дробной части числа
    • #rounddiv# - округляет рациональное число.
    • #+# - вычисление суммы рациональных чисел.
    • #*# - вычисление произведения рациональных чисел.
    • #:# - вычисление частного от деления рациональных чисел.
    • #sim# - сравнение рациональных чисел.
    • #sqrt# - вычисление корня квадратного.
    • #invert# - инвертирование числа.
  5. Операции над шестнадцатеричными числами
    • #hex-dec# - перевод из шестнадцатеричной системы в десятеричную
    • #dec-hex# - перевод из десятеричной системы в шестнадцатеричную
    • #dec-col# - превращает десятеричное число в шестнадцатеричное
    • #+col# - изменение цвета, записанного в шестнадцатеричном RGB.
    • #col-rgb# - преобразование цвета из формата RRGGBB в формат rgb понятный QSP.
    • #col-inv# - инвертирование цвета в формате RRGGBB, т.е. преобразование цвета к совершенно противоположному.
  6. Операции над массивами
    • #array.rand# - заполнение элементов массива случайными числами
    • #array.strt# - заполнение элементов массива подряд идущими числами.
    • #array.prnt# - вывод содержимого всех элементов массива в виде текста
    • #array.prnt.few# - вывод содержимого нескольких массивов.
    • #array.sort# - многофункциональная сортировка содержимого массива.
    • #array.rstd# - перетасовка элементов массива в соответствии с таблицей перестановки.
    • #array.dsrt# - операция обратная сортировке.
    • #array.simp# - сравнение содержимого двух массивов.
    • #array.clr# - удаление всех элементов массива, соответствующих указанному значению.
    • #array.srch# - поиск максимального или минимального значения числового массива по указанной области и в заданных пределах.
    • #array.ins# - вставка элемента в массив со сдвигом ячеек вправо.
    • em.arr.chType - изменение типа массива.
  7. Вспомогательные функции
    • get.word.inPos - из строки вида aaa|bbb|ccc|...|yyy|zzz вычленяется подстрока, стоящая в указанной позиции.
    • get.tag.num - получает значение одиночного тега.
    • get.tag.cont - получает значение сдвоенного тега.
    • kill.var.olegus - процедура, нагло национализированная у Olegus'а. Удаляет элемент массива по его текстовому индексу.
    • em.maxVar - поиск названия переменной среди перечисленных, которая содержит наибольшее значение.
    • em.minVar - поиск названия переменной среди перечисленных, которая содержит наименьшее значение.
    • em.var.getType - получение типа переменной.
    • #re.rgb# - получает составляющие цвета на основе числового кода цвета QSP.
  8. Работа с координатной сеткой
    • #coords.get# - определяет координаты ячейки по текущему номеру ячейки.

Перспективы

Библиотека будет пополняться новыми функциями по мере необходимости, и если существование функции хоть как-то оправдано. Некоторые функции на сегодняшний день сделать невозможно - они будут либо слишком сложны, либо заметно снизят быстродействие игры. Вероятно, некоторые математические операции очень скоро будут встроены непосредственно в движок плеера, и необходимость в них отпадёт. Такие функции будут исключаться из последующих версий библиотеки. По возможности, алгоритмы будут упрощены и разгружены, а так же будут достраиваться необходимые для работы с функциями параметры.

About

Библиотека математических функций easy.math версии 2.x.x для Quest Soft Player

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages