Lua — различия между версиями
Evereskun (обсуждение | вклад) (→Основные функции) |
Evereskun (обсуждение | вклад) |
||
Строка 40: | Строка 40: | ||
Она позволит нам форматировать время. | Она позволит нам форматировать время. | ||
+ | |||
+ | == Доступные библиотеки == | ||
+ | |||
+ | '''1. Математическая библиотека Lua (Mathematical Functions)''' | ||
+ | |||
+ | Математические функции собраны в таблице math. Для вызова функций используется запись вида: | ||
+ | math.имя_функции(...) | ||
+ | |||
+ | *'''abs''' - Возвращает модуль числа. | ||
+ | |||
+ | *'''ceil''' - Возвращает наименьшее целое число, большее или равное заданному (выполняет округление «вверх»). | ||
+ | |||
+ | *'''floor''' - Возвращает наибольшее целое число, меньшее или равное заданному (выполняет округление «вниз»). | ||
+ | |||
+ | *'''max''' - Возвращает максимальный из аргументов. | ||
+ | |||
+ | *'''min''' - Возвращает минимальный из аргументов. | ||
+ | |||
+ | *'''fmod''' - Возвращает остаток от деления одного числа на другое. | ||
+ | |||
+ | *'''modf''' - Возвращает целую и дробную части исходного числа. | ||
+ | |||
+ | *'''frexp''' - Возвращает нормализованную мантиссу и показатель аргумента. | ||
+ | |||
+ | *'''ldexp''' - Строит число по мантиссе и показателю. | ||
+ | |||
+ | *'''pow''' - Возводит число в степень. Вместо вызова функции возможно использование выражения вида x^y. | ||
+ | |||
+ | *'''sqrt''' - Вычисляет квадратный корень числа. Вместо вызова функции возможно использование выражения вида x^0.5. | ||
+ | |||
+ | *'''exp''' - Возвращает ex. | ||
+ | |||
+ | *'''log''' - Вычисляет натуральный логарифм. | ||
+ | |||
+ | *'''log10''' - Вычисляет логарифм по основанию 10. | ||
+ | |||
+ | *'''cos''' - Вычисляет косинус угла, заданного в радианах. | ||
+ | |||
+ | *'''sin''' - Вычисляет синус угла, заданного в радианах. | ||
+ | |||
+ | *'''tan''' - Вычисляет тангенс угла, заданного в радианах. | ||
+ | |||
+ | *'''cosh''' - Вычисляет гиперболический косинус. | ||
+ | |||
+ | *'''sinh''' - Вычисляет гиперболический синус. | ||
+ | |||
+ | *'''tanh''' - Вычисляет гиперболический тангенс. | ||
+ | |||
+ | *'''acos''' - Вычисляет арккосинус (в радианах). | ||
+ | |||
+ | *'''asin''' - Вычисляет арксинус (в радианах). | ||
+ | |||
+ | *'''atan''' - Вычисляет арктангенс (в радианах). | ||
+ | |||
+ | *'''atan2''' - Возвращает арктангенс x/y (в радианах), но использует знаки обоих параметров для вычисления «четверти» на плоскости. Также корректно обрабатывает случай когда y равен нулю. | ||
+ | |||
+ | *'''deg''' - Переводит величину угла из радиан в градусы. | ||
+ | |||
+ | *'''rad''' - Переводит величину угла из градусов в радианы. | ||
+ | |||
+ | *'''random''' - Функция, вызванная без аргументов, возвращает псевдослучайное число из интервала [0, 1). Эта же функция, вызванная с аргументом n, возвращает целое псевдослучайное число из интервала [1, n]. Эта же функция, вызванная с двумя аргументами l, u возвращает целое псевдослучайное число из интервала [l, u]. | ||
+ | |||
+ | *'''randomseed''' - Устанавливает стартовое число генератора псевдослучайных чисел. | ||
== Отладка == | == Отладка == |
Версия 13:02, 15 февраля 2016
Lua - скриптовый язык программирования.
Введение
Lua - динамически типизированный язык, предназначенный для использования в качестве расширения или в качестве скриптового языка, и при этом достаточно компактный, чтобы поместиться на различных исполняющих платформах. Он поддерживает небольшое количество структур данных, такие как логические значения, числа (по умолчанию — двойной точности с плавающей точкой), а также строки.
Используется для удобства вычислений и увеличения скорости исполнения кода.
Создание скрипта
В машине состояний, выбрав добавляемое свойство, создаем или открываем уже существующий скрипт (edit script):
Основные функции
При создании скриптов в первой вкладке всегда создается файл viewer.lua, где перечислен список доступных функций и параметров.
Существует четыре вида функций для взаимодействия скрипта с машиной состояний:
Добавлены функции (вытягивание данных из текстовой базы):
viewer.getResFromTxtDB(txtID,tp,defValue)
viewer.getStrFromTxtDB(txtID,sense,defValue)
С их помощью можно вытянуть иконку из текстовой базы и вытянуть текст по текущей локализации.
Частично доступна библиотека os:
date
difftime
time
Она позволит нам форматировать время.
Доступные библиотеки
1. Математическая библиотека Lua (Mathematical Functions)
Математические функции собраны в таблице math. Для вызова функций используется запись вида: math.имя_функции(...)
- abs - Возвращает модуль числа.
- ceil - Возвращает наименьшее целое число, большее или равное заданному (выполняет округление «вверх»).
- floor - Возвращает наибольшее целое число, меньшее или равное заданному (выполняет округление «вниз»).
- max - Возвращает максимальный из аргументов.
- min - Возвращает минимальный из аргументов.
- fmod - Возвращает остаток от деления одного числа на другое.
- modf - Возвращает целую и дробную части исходного числа.
- frexp - Возвращает нормализованную мантиссу и показатель аргумента.
- ldexp - Строит число по мантиссе и показателю.
- pow - Возводит число в степень. Вместо вызова функции возможно использование выражения вида x^y.
- sqrt - Вычисляет квадратный корень числа. Вместо вызова функции возможно использование выражения вида x^0.5.
- exp - Возвращает ex.
- log - Вычисляет натуральный логарифм.
- log10 - Вычисляет логарифм по основанию 10.
- cos - Вычисляет косинус угла, заданного в радианах.
- sin - Вычисляет синус угла, заданного в радианах.
- tan - Вычисляет тангенс угла, заданного в радианах.
- cosh - Вычисляет гиперболический косинус.
- sinh - Вычисляет гиперболический синус.
- tanh - Вычисляет гиперболический тангенс.
- acos - Вычисляет арккосинус (в радианах).
- asin - Вычисляет арксинус (в радианах).
- atan - Вычисляет арктангенс (в радианах).
- atan2 - Возвращает арктангенс x/y (в радианах), но использует знаки обоих параметров для вычисления «четверти» на плоскости. Также корректно обрабатывает случай когда y равен нулю.
- deg - Переводит величину угла из радиан в градусы.
- rad - Переводит величину угла из градусов в радианы.
- random - Функция, вызванная без аргументов, возвращает псевдослучайное число из интервала [0, 1). Эта же функция, вызванная с аргументом n, возвращает целое псевдослучайное число из интервала [1, n]. Эта же функция, вызванная с двумя аргументами l, u возвращает целое псевдослучайное число из интервала [l, u].
- randomseed - Устанавливает стартовое число генератора псевдослучайных чисел.
Отладка
print(e1, e2, ...) Печатает значения аргументов. В конце выводится перевод строки. Эта функция не предназначена для форматного вывода, а только для быстрого (отладочного) вывода значений переменных.
В app.icf при установке
[GameTrace]
Level="Verbose"
В логе у нас появятся данные из скриптов со всеми операциями:
D/IScript IScript::callScriptMethod() callScriptMethod: "lottery_scpt:init"
D/IScript viewer_getResFromTxtDB() viewer.getResFromTxtDB(5670,0,666)->666
ID("control") - функция, которая возвращает ID объекта с именем "control" - сделано для удобства переноса скриптов из одного проекта в другой, не подвязываясь к ID объекта. НО, при импорте скрипта в другой проект важно проверять наличие объектов с таким же именем. Их быть не должно! В противном случае при сохранении проекта в редакторе будет выдаваться ошибка
Пример использования
Рассмотрим пример использования скрипта для написания программы Калькулятор
Создаем машину состояний с именем "control", в ней создаем скрипт obj_control.lua. В функции init () объявляем переменные:
1. По тапу на кнопки 0-9 записываем машине соответствующий параметр и вызываем состояние pressedDigit:
При вызове состояния pressedDigit скрипт вызывает функцию pressedDigit():
Объявляем локальную переменную local digit, в которую будем записывать значение параметра pressed (записанное по тапу на кнопку).
2. Аналогично по тапу на кнопки операторов записываем параметр и вызываем функцию pressedOperator():
3. Вызов функции pressedRavnо(), вычисление и вывод результата:
Пример реализации
Литература
1. Официальный сайт Lua - http://www.lua.org/home.html
2. http://tylerneylon.com/a/learn-lua/
3. http://docs.madewithmarmalade.com/display/MD/Introduction+to+Lua
4. Программа - интерпретатор для работы со скриптами Lua - ZeroBrane Studio: http://studio.zerobrane.com/