Вход
Приветствую Вас Гость
 

easy.math.qsp v. 2.4.0

Библиотека математических функций

Разрабатывалась для плееров версий 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, внесены большие изменения (см. историю версий), и многие функции потеряли обратную совместимость. Управляющие конструкции для многих функций переписаны и приведены к единому виду! Будьте внимательны при обновлении библиотеки, если вы её уже используете!!!
По всем вопросам и предложениям обращаться:
  • aleksversus@mail.ru
  • Вконтакте: id40090736
Изначально библиотека создавалась для обеспечения нужд игры МАГИКОН.

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

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

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

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

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

    addqst 'lib\easy.math.qsp'

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

    inclib 'lib\easy.math.qsp'
    $AVS_PLAYERTYPE='[QN]'

  3. теперь Вы можете пользоваться функциями библиотеки.

Все функции библиотеки вызываются с помощью ключевого слова 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, чтобы избежать пересечений с именами переменных, которые Вы используете в своих играх.

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

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

В руководстве приводятся примеры с результатами работы функции. Такие примеры не являются валидным кодом QSP, и служат лишь для демонстрации вызова функций и результата, который они вернут. Чтобы превратить данные примеры в валидный код QSP, необходимо закомментировать часть с представленным результатом.

! не валидный код QSP
$func('#zero#',13)='0000000000000'
$func('#zero#',13,'1')='1111111111111'
$func('#zero#',13,'10')='10101010101010101010101010'
$func('#zero#',13,'a')='aaaaaaaaaaaaa'
$func('#zero#',3,'bla')='blablabla'
! валидный код QSP
$func('#zero#',13& ! ='0000000000000'
$func('#zero#',13,'1'& ! ='1111111111111'
$func('#zero#',13,'10'& ! ='10101010101010101010101010'
$func('#zero#',13,'a'& ! ='aaaaaaaaaaaaa'
$func('#zero#',3,'bla'& ! ='blablabla'

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

Функции

  1. Операции над целыми числами

    • #even# - округление целых чисел до указанной разрядности
    • #sum# - подсчёт суммы всех элементов массива.
    • #raz# - получение разрядности целого числа
    • #^# - возведение целого числа в степень.
    • #-# - модуль от разности. c=|a-b|
    • em.random - случайное число в указанных промежутках.
    • em.log - логарифмирование по указанному основанию.
  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.prnt# - вывод содержимого всех элементов массива в виде текста
    • #array.prnt.few# - вывод содержимого нескольких массивов.
    • #array.clr# - удаление всех элементов массива, соответствующих указанному значению.
    • #array.ins# - вставка элемента в массив со сдвигом ячеек вправо.
    • em.arr.chType - изменение типа массива.
    • #array.rand# - заполнение элементов массива случайными числами
    • #array.strt# - заполнение элементов массива подряд идущими числами.
    • #array.sort# - многофункциональная сортировка содержимого массива.
    • #array.rstd# - перетасовка элементов массива в соответствии с таблицей перестановки.
    • #array.dsrt# - операция обратная сортировке.
    • #array.simp# - сравнение содержимого двух массивов.
    • #array.srch# - поиск максимального или минимального значения числового массива по указанной области и в заданных пределах.
  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# - определяет координаты ячейки по текущему номеру ячейки.

Перспективы

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

Наверх