easy.math.qsp v 2.1

Внимание!!! В данной версии руководства присутствуют неточности в определениях чисел. Временами рациональные, вещественные и натуральные числа перепутаны и называются неправильно. Если Вы математик, Вы должны испытывать справедливый гнев. Сам знаю, это кощунство. Постараюсь исправить. Если нашли ошибку в определениях, сообщите адрес страницы, заголовок, под которым расположено неверное определение числа и желательно фрагмент текста. Заранее благодарен и прошу прощения.
       Библиотека сработана для версии плеера QSP 5.7.0. Не гарантируется правильная работа на плеерах иных версий. Некоторые функции имеют ограничения на значение числовых аргументов, это связано с используемыми плеером библиотеками. Для разных версий плеера могут быть разные ограничения, поэтому внимательно читайте документацию к плееру, под который разрабатываете игру. По всем вопросам и предложениям обращаться:

     ICQ: 437337904
     Skype: aleksversus
     e-mails:
  • aleksversus@mail.ru
  • lex666endless@rambler.ru
  • aleks.versus@yandex.ru
  • aleksversus@yandex.ru
     Вконтакте: id40090736


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


Сопроводительный текст и инструкции для пользования библиотекой.

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

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

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

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

    addqst 'lib\easy.math.qsp'

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

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

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

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

  • Версия 2.1.1:
    1. сконструирован простейший отладчик
    2. изменен принцип работы функции #+# - теперь она может работать со сколько угодно большими числами.
  • Версия 2.1.2:
    1. добавлена функция #zero#
    2. исправлена ошибка, приводившая к неправильному счёту при использовании нескольких функций подряд.
  • Версия 2.1.3:
    1. добавлена функция #add#
    2. добавлена функция #dev#
    3. переработана функция #+# - теперь она работает проще и быстрее, используя функции логического сложения и вычитания, что позволило суммировать числа любой длины и знака.
    4. переработана и упрощена функция #*# - может перемножать числа любой длины и знака.
    5. исправлена ошибка в функции #sum#, приводившая к неверному подсчёту вплоть до зависания программы.
  • Версия 2.1.4:
    1. исправлена функция #dev# - теперь она вычитает с учётом переполнения.
    2. исправлена функция #rndstr#
  • Версия 2.1.5:
    1. введены функции работы с массивами:
           #array.rand# - заполняет массив случайными числовыми значениями
           #array.prnt# - выводит в результат содержимое массива
           #array.sort# - сортировка значений массива
           #array.rstd# - перестановка значений массива
           #array.dsrt# - восстановление массива к виду до сортировки
    2. Модернизирована функция #array.sort#. Теперь она сортирует также и по строковым значениям.
    3. Исправлены функции работы с щестнадцатеричными числами: удалены лишние переменные.
    4. Добавлена функция сравнения содержимого двух массивов #array.simp#
  • Версия 2.1.6:
    1. Изменена функция, вычисляющая модуль разности двух чисел #-#
    2. Расширена функция #array.prnt#
    3. Добавлена функция #str.inArray#, которая выбирает из блока текста строки и помещает их в массив.
  • Версия 2.1.7:
    1. Добавлена функция #array.prnt.few#, которая позволяет выводить на экран содержимое сразу нескольких массивов
    2. Добавлена функция #WIDETRIM# - отрезающая прилегающие символы пробелов и табуляций и переводов строк.
    3. Изменена функция #array.prnt# - расширена возможностью убирать из результатов прилегающие пробельные символы.
    4. Расширена функция #WIDETRIM# - расширена возможностью убирать из строк преформатирование.
    5. Изменена функция #WIDETRIM# - теперь удаляются все строки, которые не содержат ничего, кроме пробельных символов, в начале и конце текста.
  • Версия 2.1.8:
    1. В модуль добавлены вспомогательные функции:
      get.tag.cont - получает значение сдвоенных тегов.
      get.tag.num - получает значение одиночных тегов.
      get.word.inPos - из строки вида "слово1|слово2|...|слово3" получает слово в указанной позиции между вертикальными чертами
      kill.var.olegus - удаляет элемент массива по текстовому индексу.
  • Версия 2.1.9:
    1. Имя функции #WIDETRIM# заменено на #widetrim#.
    2. Исправлена ошибка в функции get.tag.num, приводившая к неправильному получению гексаметричного числа.
    3. Исправлена ошибка в функции #widetrim#, приводившая к зависанию плеера, когда ей передавали пустое значение
    4. Cлегка подправлена функция #chk.array.word# - теперь можно указать границы поиска: начальный и конечный элемент.

Функции

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

    • #even# - округление целых чисел до указанной разрядности
    • #sum# - подсчёт суммы всех элементов массива.
    • #raz# - получение разрядности целого числа
    • #^# - возведение целого числа в степень.
    • #-# - модуль от разности. c=|a-b|
  2. Логические операции

    • #add# - "логическое" сложение
    • #dev# - "логическое" вычитание
  3. Операции над текстом

    • #zero# - генерирует строку одинаковых символов
    • #rndstr# - генерирует строку случайных символов
    • #chk.obj.word# - производит поиск предмета в "инвентаре"
    • #chk.array.word# - производит поиск элемента массива, содержащего строку, соответствующую регулярному выражению.
    • #str.inArray# - из блока текста выбирает все строки между указанными разделителями и помещает их в указанный массив.
  4. Операции над вещественными (дробными) числами

    • #dz# - отсечение нулей в дробной части числа
    • #indiv# - рациональное частное от деления двух целых чисел
    • #undiv# - превращает рациональное число в целое
    • #razdiv# - получает разрядность дробной части числа
    • #rounddiv# - округляет рациональное число.
    • #+# - вычисление суммы рациональных чисел.
    • #*# - вычисление произведения рациональных чисел.
    • #:# - вычисление частного от деления рациональных чисел.
    • #sim# - сравнение рациональных чисел.
    • #sqrt# - вычисление корня квадратного.
    • #invert# - инвертирование числа.
  5. Операции над шестнадцатеричными числами

    • #hex-dec# - перевод из шестнадцатеричной системы в десятеричную
    • #dechex# - перевод из десятеричной системы в шестнадцатеричную
    • #dec-col# - превращает десятеричное число в шестнадцатеричное
    • #+col# - изменение цвета, записанного в шестнадцатеричном RGB.
  6. Операции над массивами

    • #array.rand# - заполнение элементов массива случайными числами
    • #array.prnt# - вывод содержимого всех элементов массива в виде текста
    • #array.sort# - многофункциональная сортировка содержимого массива.
    • #array.rstd# - перетасовка элементов массива в соответствии с таблицей перестановки.
    • #array.dsrt# - операция обратная сортировке.
    • #array.simp# - сравнение содержимого двух массивов.

Перспективы

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

  Aleks Versus'Easy Libraries'2013
Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013