Lua — различия между версиями
Evereskun (обсуждение | вклад) |
Evereskun (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
Официальный сайт Lua - http://www.lua.org/home.html. | Официальный сайт Lua - http://www.lua.org/home.html. | ||
+ | |||
+ | http://tylerneylon.com/a/learn-lua/ | ||
+ | |||
+ | http://docs.madewithmarmalade.com/display/MD/Introduction+to+Lua | ||
== Введение == | == Введение == | ||
Строка 30: | Строка 34: | ||
Рассмотрим пример использования скрипта для написания программы Калькулятор | Рассмотрим пример использования скрипта для написания программы Калькулятор | ||
− | [[Файл:Project.png]] | + | [[Файл:Project.png]] |
Создаем машину состояний с именем "control", в ней создаем скрипт obj_control.lua. В функции init () объявляем переменные: [[Файл:self.png]] | Создаем машину состояний с именем "control", в ней создаем скрипт obj_control.lua. В функции init () объявляем переменные: [[Файл:self.png]] | ||
+ | |||
+ | self.res - результат вычислений | ||
+ | self.valLeft - переменная, в которую записываем первое число | ||
+ | self.valRight - переменная, в котрую записываем второе число | ||
+ | self.valRightExiste = false | ||
+ | self.operatorSelected - флаг для ввода оператора (+,-,/,*), который записываем в true, если ввели первую переменную. | ||
+ | self.operator - ввод самого оператора | ||
+ | self.txt - вывод вычислений в строку | ||
По тапу на кнопки 0-9 записываем машине соответствующий параметр и вызываем состояние: | По тапу на кнопки 0-9 записываем машине соответствующий параметр и вызываем состояние: | ||
[[Файл:0digit.png]] | [[Файл:0digit.png]] | ||
+ | |||
+ | При вызове состояния pressedDigit скриптом запускается соответствующая функция: | ||
+ | |||
+ | Объявляем локальную переменную local digit, в которую будем записывать значение параметра pressed (записанное по тапу на кнопку). | ||
+ | |||
+ | [[Файл:Presseddigit.png]] | ||
+ | |||
+ | |||
+ | |||
+ | ID("control") - функция, которая возвращает ID объекта с именем "control" - сделано для удобства переноса скриптов из одного проекта в другой, не подвязываясь к ID объекта. НО, при импорте скрипта в другой проект важно проверять наличие объектов с таким же именем. Их быть не должно! В противном случае при сохранении проекта в редакторе будет выдаваться ошибка [[Файл:Errorscript.png]] |
Версия 16:20, 12 февраля 2016
Lua - скриптовый язык программирования.
Официальный сайт Lua - http://www.lua.org/home.html.
http://tylerneylon.com/a/learn-lua/
http://docs.madewithmarmalade.com/display/MD/Introduction+to+Lua
Введение
Lua - динамически типизированный язык, предназначенный для использования в качестве расширения или в качестве скриптового языка, и при этом достаточно компактный, чтобы поместиться на различных исполняющих платформах. Он поддерживает небольшое количество структур данных, такие как логические значения, числа (по умолчанию — двойной точности с плавающей точкой), а также строки.
Используется для удобства вычислений и увеличения скорости исполнения кода.
Создание скрипта
В машине состояний, выбрав добавляемое свойство, есть возможность создать или открыть уже существующий скрипт (edit script):
Программа - интерпретатор для работы со скриптами Lua - ZeroBrane Studio: http://studio.zerobrane.com/
Основные функции
При создании скриптов в первой вкладке всегда создается файл viewer.lua, где перечислен список доступных функций и параметров.
Существует четыре вида функций для взаимодействия скрипта с машиной состояний:
Пример использования
Рассмотрим пример использования скрипта для написания программы Калькулятор
Создаем машину состояний с именем "control", в ней создаем скрипт obj_control.lua. В функции init () объявляем переменные:
self.res - результат вычислений self.valLeft - переменная, в которую записываем первое число self.valRight - переменная, в котрую записываем второе число self.valRightExiste = false self.operatorSelected - флаг для ввода оператора (+,-,/,*), который записываем в true, если ввели первую переменную. self.operator - ввод самого оператора self.txt - вывод вычислений в строку
По тапу на кнопки 0-9 записываем машине соответствующий параметр и вызываем состояние:
При вызове состояния pressedDigit скриптом запускается соответствующая функция:
Объявляем локальную переменную local digit, в которую будем записывать значение параметра pressed (записанное по тапу на кнопку).
ID("control") - функция, которая возвращает ID объекта с именем "control" - сделано для удобства переноса скриптов из одного проекта в другой, не подвязываясь к ID объекта. НО, при импорте скрипта в другой проект важно проверять наличие объектов с таким же именем. Их быть не должно! В противном случае при сохранении проекта в редакторе будет выдаваться ошибка