Войти или зарегистрироваться

Туториал [Lua] Учимся вместе или "Хэппи Луа"

Продолжать или не стоит этого делать?

  • Да, давай!

    Голосов: 66 81,5%
  • Не, не надо!

    Голосов: 4 4,9%
  • Ну можно еще попробовать, а дальше посмотрим...

    Голосов: 11 13,6%

  • Всего проголосовало
    81

konfyciu98

Старожил
Пользователь
Баллы
123
Имя в Minecraft
konfyciu
Всем привет! Это будет серия уроков\туторов, в которой мы будем вместе учиться программировать на ЯП Lua. Я не великий писатель, и если вам будет что-то не понятно, то пишите, я помогу! Ну окей, начнем!

Немного о Lua

Lua ([луа], порт. «луна») — интерпретируемый язык программирования, разработанный подразделением Tecgraf Католического университета Рио-де-Жанейро.
По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями. Хотя Lua не содержит понятия класса и объекта в явном виде, механизмы ООП, включая множественное наследование, легко реализуются с использованием метатаблиц.

Язык широко используется для создания тиражируемого программного обеспечения (
на нём написан графический интерфейс пакета Adobe Lightroom). Также получил известность как язык программирования уровней и расширений во многих играх (например, World of Warcraft) из-за удобства встраивания, скорости исполнения кода и лёгкости обучения.
Спасибо википедии :D
Что нам потребуется?
  • Настроение, желание
  • Среда разработки. Я буду использовать Eclipse от Koneki(не пугайтесь, это версия для Lua). Вы же можете использовать то, что вам по вкусу.
  • Хорошая музыка, чтоб не скучать!
Урока первый. Входим в Lua.

В Lua есть восемь основных типов данных:
  1. nil (неопределенный)
  2. boolean (логический)
  3. number (числовой)
  4. string (строковой)
  5. function (функция)
  6. userdata (пользовательские данные)
  7. thread (поток)
  8. table (таблица)
Тип table(таблица) - таблицы являются самым важным типом данных в Lua и являются фундаментом для пользовательских типов данных, таких как структуры, массивы, списки, множества. Таблица в Lua представляет собой набор пар — (Ключ, Значение). Ключом может выступать значение любого типа, кроме nil.

Обозначение переменных.
В Луа переменные обозначаются следующим образом:

Код:
a = "Hi, guys"
b = 3
c = 2.5
d = true

Как вы могли заметить, то в обозначении переменной не пишется тип данных(если не так, то исправьте меня, буду только рад!). Ещё вы могли заметить, что после строки не ставилась точка с запятой[;]. Вы можете ей ставить, а можете и не ставить, разницы никакой не будет. Но лучше ставить, потому что при переходе на другой язык программирования вам придется ставить её обязательно!


А теперь "Hello, world"!

Для начала создадим проект в Eclipse
first.PNG

second.PNG

У меня ошибка, так как такой проект уже создан, у вас все должно быть нормально, название проекта любое. Не забудьте поменять API 5.1 на 5.2!
Далее нажимаем Finish и готово! В итоге у вас должно получиться такое


hellofirst.PNG

Теперь между local function main() и end пишем:
Код:
print("Hello, world!");

hellosecond.PNG

Жмем на зеленую стрелочку или нажимаем F5

comp.PNG

yes.PNG

И вуаля! В консоли появилась строка "Hello, world!".

finish.PNG


На этом я хочу закончить этот урок, потренируйтесь в выводе строк, найдите музыку к следующему уроку и схомячьте пару печенек! До встречи!
 
Последнее редактирование:
Урок второй. Комментарии.

Сейчас мы быстренько пробежимся по этой теме, так как много времени она у нас не займет.

Во всех языках программирования есть комментарии, которые позволяю оставлять для себя "метки". Эти "метки" компилятор пропускает, поэтому пользователь их никогда и не увидит, если только не заглянет в исходный код.

В Lua есть два вида комментариев: однострочный и многострочный. Первый подходит для кратких
"меток" и его чаще всего используют.

Как же выглядят комментарии?

Все очень просто! Вот однострочный:
Код:
-- Простой пример однострочного комментария

Открывается такой комментарий при помощь двойного тире "--", закрывать его ничем не надо, главное запомнить, что такой комментарий всегда должен располагаться на одной строке.

А вот так выглядит многострочный комментарий:
Код:
--[[Это многострочный комментарий!
И поэтому я
могу писать
где угодно в пределах квадратных
скобок]]

Многострочный комментарий открывается при помощи двойного тире и двух квадратных скобок "--[[", а закрывается тоже при помощи квадратных скобок, но только направленных обратно "]]"

Домашняя работа.
Для закрепления данного материала попробуйте у себя составить вот такой рисунок, и скомпилируйте код. --F5 или зеленая стрелочка, если кто забыл ;)
Если вы сделали все правильно, то у вас в консоли не будет ошибок и никакого текста не появится!
comments.PNG
 
Когда закончишь всю "серию" уроков?)
 
Ты хочешь до этого времени не заходить на РБ, а когда наступит момент, зайти и сразу прочитать все. Я так это понял.
Нет,Просто всем удобней читать готовый материал,чем ждать определенных частей.На РБ я заходить то все равно буду)
 
Нет,Просто всем удобней читать готовый материал,чем ждать определенных частей.На РБ я заходить то все равно буду)
Я не знаю, моим фантазиям нет предела:)
 
Переменные.

Как я уже говорил, в Lua обозначать тип переменной не обязательно, он как и в PHP определяется автоматически.

Несколько примеров:

Код:
a = “build”; --переменная a является типом String

food = 3; -- пeременная food является типом number

z = true; -- переменная z является типом boolean

Вы уже догадались, как объявляются переменные.

Имя переменной = значение;
Код:
Cooler = “cooler”;

Значения для типов переменных.

Тип string:
Код:
a = “Привет”; b = ‘Пока’; -- значение переменных для типа Stringпрописываются в двойных или одинарных кавычках

Тип number:
Код:
a = 3; b = 4.6; -- в значение переменных типа Numberпрописывается либо целое число, либо число с плавающей точкой (5.6 и т.п)

Тип boolean:
Код:
a = true; b = false; -- значение переменных типа Booleanпринимает значение либо true, либо false

Тип nil:
Код:
a = nil;
Это означает, что переменная только объявлена, но значение ей не присвоено!

Тип table:

Тип table– это самые обыкновенные массивы. Этому типу мы отдельно посвятим урок, а сейчас кратко.
Код:
a = {2,5,true,”zero”};
b = {x=5,y=true, qwerty= “12345”};

Тип function:

Тип function– это самая обыкновенная функция. Этому типу мы тоже посвятим отдельный урок, а сейчас кратенько.
Код:
main = function()
print(“Up & Down”);
end

Так-с, объявлять переменные научились, со значениями разобрались.

Теперь зарезервированные названия, которые НЕЛЬЗЯ использовать в качестве названия переменной!
  • and
  • end
  • in
  • repeat
  • break
  • false
  • local
  • return
  • do
  • for
  • nil
  • then
  • else
  • function
  • not
  • true
  • elseif
  • if
  • or
  • until
  • while
Сейчас маленькое дополнение...

Как можно узнать тип переменной? Очень легко!
Код:
x = "number";
y = 4.5;
print(type(x)..type(y));
Благодаря функции type(), мы можем узнать тип переменной! Круто, да?

Домашнее задание.
Создайте 2 переменные с любым название и с любым значением. Дополнительно создайте еще две переменные: у первой должно быть название in, а у другой значение nil.
Теперь выведите каждую переменную отдельно на экран функцией print();
Подсказка: чтобы разделить строки, используйте \n.
Пример:
Код:
print("Привет!\nА это уже на другой строке");
print(firstvar.."\n");
Вопрос: возникли ли у вас ошибки при исполнении кода? Если да, то что это были за обишки и как вы с ними справились? А если нет, то просто отправьте веселый смайлик мне в лс :)
 
Действительно, стоящая тема. Только интересно, почему она в оффтопе - на некоторых ядах серверов применяется язык lua для написания плагинов - будет вполне удобно прочесть эту тему именно в мануалах, а не в оффтопике на предпоследней странице.
 
Сразу вопрос. Лаунчер на нём написать реально?
 
Действительно, стоящая тема. Только интересно, почему она в оффтопе - на некоторых ядах серверов применяется язык lua для написания плагинов - будет вполне удобно прочесть эту тему именно в мануалах, а не в оффтопике на предпоследней странице.
Я не хотел рисковать и поэтому написал в офф.топ.
Сразу вопрос. Лаунчер на нём написать реально?
Да, наверное.
Действительно, стоящая тема. Только интересно, почему она в оффтопе - на некоторых ядах серверов применяется язык lua для написания плагинов - будет вполне удобно прочесть эту тему именно в мануалах, а не в оффтопике на предпоследней странице.
Я видел, что само ядро писали на JavaScript! А Lua такой же скриптовой язык + к нему можно подключать библиотеки C. Тогда и на Lua можно написать лаунчер, ядро?
Конкатенация и спец. символы.

Код:
u = 4;
print("Это "..u.." урок!"); -- Выводом такого кода будет являться «Это 4 урок!»

Код:
s = 15;
me = "Мне";
print(me..s.."лет"); -- Выводом такого кода будет являться «Мне 15 лет»

Так что же такое конкатенация? Если сказать по-простому, то это сложение строк, добавление к строке вывод переменной и т.д.

Если вы раньше имели дело с Java, то вам будет понятно после вот такого примера:
Код:
Int b = 15;
System.out.println("Мне " + b + " лет");

В Lua конкатенация осуществляется при помощи двух точек (..).

Я думаю, что вам уже все стало понятно! Теперь перейдем к следующему…

Специальные символы

В Lua есть ряд специальных символов(они есть в каждом ЯП). Специальные символы служат для таких целей, как:
  • Переход на новую строку
  • Табуляция
  • Вертикальная табуляция
  • Вывод в строке таких символов, как : \ ' " []
  • Вписываются спец. символы обратным слэшем и символом. Вот так вот: \n
\ - обратный слэш
n– символ

Какие же есть спец символы?
  • \n – новая строка
  • \v – вертикальная табуляция
  • \t – горизонтальная табуляция
  • \\ - вывод \, + подумайте, почему так надо? Почему нельзя просто взять и вывести \?
  • \" – вывод "
  • \[,\] – вывод [ или ]
  • \' – вывод '

Примеры:
Код:
print("Привет!\nЯ литл пони"); -- Выведет «Я литл пони» на новой строке
print("Привет!\tХай!") –сделает табуляцию перед «Хай!»
ch = "Чип?";
dl = "Дейл!";
print(ch.."\n"..dl); --Выведет переменную dl на новой строке.
Потренируйтесь, перепишите это к себе, придумайте свои примеры, главное уловить суть!

Домашнее задание.
Создайте 3 переменные типа string. Выведите их в одном print() и после первой переменной сделайте вертикальную табуляция, а после второй выведите обратный слэш.
Если кому-то непонятно, то пишите в лс! Просто мои задания и объяснение материала могут быть настолько запутанными, что понять это могу я, ибо моя сила рассказа такова...
 
Последнее редактирование:
Я не хотел рисковать и поэтому написал в офф.топ.

Да, наверное.

Я видел, что само ядро писали на JavaScript! А Lua такой же скриптовой язык + к нему можно подключать библиотеки C. Тогда и на Lua можно написать лаунчер, ядро?
Кто не рискует, тот не пьёт лимонад.
А разве lua может работать с графикой? Максимум можно на нём батник сделать... Да и не делался он для таких задач.
Ядро на lua написать можно.
 
Последнее редактирование:
Помню у меня был простой сервачок в МТА(кто незнает, это клиент для игры GTA San Andreas по сети) так вот, там скрипты на lua писались, хотя я сам не умел. Сечас планирую опять сделать там серв, уже получше и с хостингом, так что жду еще уроков)))
 
Помню у меня был простой сервачок в МТА(кто незнает, это клиент для игры GTA San Andreas по сети) так вот, там скрипты на lua писались, хотя я сам не умел. Сечас планирую опять сделать там серв, уже получше и с хостингом, так что жду еще уроков)))
А ты попробуй сейчас делать домашнее задание и просто практиковаться на скриптах и загружать их! Так у тебя в дальнейшем будет лучше получаться!
 
Пишите лаунчер на Lua :)
 
Кто не рискует, тот не пьёт лимонад.
А разве lua может работать с графикой? Максимум можно на нём батник сделать... Да и не делался он для таких задач.
Ядро на lua написать можно.
Вроде бы Stalker на lua написан
 
Назад
Верх