Изучайте Lua
Бесплатный интерактивный онлайн-курс Lua. Вы пишете код на Lua в каждом уроке, с подсказками ИИ, когда что-то выдаёт nil, и бесплатным сертификатом по окончании.
58,210+ codders записались
- Для начинающих
Помощь ИИ при написании кода
Практические интерактивные уроки
Аудио-озвучка к каждому уроку
Тесты для проверки знаний
Бесплатный сертификат о прохождении
Программа
Раздел 1
Fundamentals
Начать разделНачатьРазвернутьСвернутьThe first section in Lua for absolute beginners.Введение
3 уроков216- 01ЯзыкЗадача
- 02Hello World!ЗадачаКвиз
- 03КомментарииКвиз
Переменные и типы данных
8 уроков754- 01Что такое переменная?ЗадачаКвиз
- 02ЧислаЗадачаКвиз
- 03СтрокиЗадачаКвиз
- 04Булевы значенияЗадачаКвиз
- 05Значение 'nil'ЗадачаКвиз
- 06Функция type()ЗадачаКвиз
- 07Правила именованияКвиз
- 08Итоги — Профиль персонажаЗадача
Операторы 1: Арифметика и конкатенация
6 уроков635- 01Арифметические операторыЗадачаКвиз
- 02Оператор остатка от деленияЗадачаКвиз
- 03Оператор возведения в степеньЗадачаКвиз
- 04Конкатенация строкЗадачаКвиз
- 05Приоритет операторовЗадачаКвиз
- 06Повторение: Простые вычисленияЗадача
Операторы 2: Сравнение и логика
8 уроков651- 01Операторы равенстваЗадачаКвиз
- 02Операторы сравненияЗадачаКвиз
- 03Оператор 'and'ЗадачаКвиз
- 04Оператор 'or'ЗадачаКвиз
- 05Оператор 'not'ЗадачаКвиз
- 06Сокращенные вычисленияКвиз
- 07Значения Truthy и FalsyКвиз
- 08Итоги: Простая логикаЗадача
Базовый вывод
9 уроков954- 01Вывод литераловЗадачаКвиз
- 02Вывод переменныхЗадачаКвиз
- 03Вывод нескольких значенийЗадачаКвиз
- 04Объединение строк и переменныхЗадачаКвиз
- 05Функция tostring()ЗадачаКвиз
- 06ВводЗадачаКвиз
- 07Приведение типовЗадачаКвиз
- 08Повторение — Отчет о состоянииЗадача
- 09Повторение — До 120Задача
Проект: Вывод характеристик персонажа
Проект5 уроков1- 01Приветственное сообщениеЗадача
- 02Объявление характеристик персонажаПроект
- 03Вывод основных характеристикПроект
- 04Добавление логического флагаПроект
- 05Итоговое резюмеПроект
Основы условной логики
4 уроков423- 01Оператор if-thenЗадачаКвиз
- 02Оператор if-then-elseЗадачаКвиз
- 03Оператор elseifЗадачаКвиз
- 04Итоги — Сундук с сокровищамиЗадача
Основы работы со строками
6 уроков637- 01string.len()ЗадачаКвиз
- 02string.upper и string.lowerЗадачаКвиз
- 03string.sub()ЗадачаКвиз
- 04string.rep()ЗадачаКвиз
- 05string.find()ЗадачаКвиз
- 06Повторение — Форматирование имени пользователяЗадача
Основы функций
6 уроков636- 01Объявление функцииЗадачаКвиз
- 02Вызов функцииЗадачаКвиз
- 03Функции с параметрамиЗадачаКвиз
- 04Функции с несколькими параметрамиЗадачаКвиз
- 05Оператор 'return'ЗадачаКвиз
- 06Повторение — Калькулятор площадиЗадача
Таблицы, часть 1: Списки
8 уроков752- 01Что такое таблица?Квиз
- 02Создание таблицыЗадачаКвиз
- 03Доступ к элементам по индексуЗадачаКвиз
- 04Изменение элементов по индексуЗадачаКвиз
- 05Оператор длины '#'ЗадачаКвиз
- 06table.insert()ЗадачаКвиз
- 07table.remove()ЗадачаКвиз
- 08Итоги: управление участниками группыЗадача
Таблицы 2: Словарный стиль
7 уроков648- 01Пары ключ-значениеКвиз
- 02Создание таблиц-словарейЗадачаКвиз
- 03Доступ: квадратные скобкиЗадачаКвиз
- 04Доступ через точечную нотациюЗадачаКвиз
- 05Добавление и изменение парЗадачаКвиз
- 06Удаление пар с помощью nilЗадачаКвиз
- 07Итоги: свойства элементовЗадача
Основы циклов
6 уроков636- 01Цикл whileЗадачаКвиз
- 02Цикл repeat-untilЗадачаКвиз
- 03Числовой цикл forЗадачаКвиз
- 04Цикл for с шагомЗадачаКвиз
- 05Оператор 'break'ЗадачаКвиз
- 06Повторение — Обратный отсчётЗадача
Проект: Простой магазин зелий
Проект6 уроков1- 01Настройка проектаЗадача
- 02Добавление зельяПроект
- 03Отображение инвентаряПроект
- 04Расчет общей стоимости запасовПроект
- 05Поиск конкретного зельяПроект
- 06Продажа зельяПроект
Область видимости переменных
5 уроков330- 01Глобальные переменныеКвиз
- 02Локальные переменныеЗадачаКвиз
- 03Зачем использовать локальные переменные?Квиз
- 04Область видимости и блокиЗадачаКвиз
- 05Повторение — Головоломка на область видимостиЗадача
Финальные испытания
3 уроков3- 01Повторение — Ход игрокаЗадача
- 02Повторение — Простая база данныхЗадача
- 03Повторение — Сумма чётных чиселЗадача
Раздел 2
Logic & Flow
Начать разделНачатьРазвернутьСвернутьDevelop problem-solving skills and create dynamic, interactive programsПродвинутая итерация таблиц
4 уроков423- 01Итерация с помощью pairs()ЗадачаКвиз
- 02Итерация с помощью ipairs()ЗадачаКвиз
- 03pairs() против ipairs()ЗадачаКвиз
- 04Повторение — Лист персонажаЗадача
Дополнительные функции библиотеки table
5 уроков430- 01table.concat()ЗадачаКвиз
- 02Создание таблиц и unpack()ЗадачаКвиз
- 03table.sort()ЗадачаКвиз
- 04Пользовательская сортировка с помощью функцийКвиз
- 05Итоги — Таблица рекордовЗадача
Продвинутые концепции функций
6 уроков539- 01Возврат нескольких значенийКвиз
- 02Вариативные функции (...)ЗадачаКвиз
- 03Функции как объекты первого классаЗадачаКвиз
- 04Анонимные функцииЗадачаКвиз
- 05Что такое замыкание?ЗадачаКвиз
- 06Итоги — простой обработчик событийЗадача
Введение в метатаблицы
8 уроков757- 01Что такое метатаблица?Квиз
- 02setmetatable и getmetatableЗадачаКвиз
- 03Метаметод __indexЗадачаКвиз
- 04Метаметод __newindexЗадачаКвиз
- 05Метаметод __tostringЗадачаКвиз
- 06Арифметические метаметоды. Часть 1ЗадачаКвиз
- 07Арифметические метаметоды. Часть 2ЗадачаКвиз
- 08Итоги — Таблица только для чтенияЗадача
Проект: Движок текстового квеста
Проект8 уроков1- 01Настройка проекта: КомнатаЗадача
- 02Соединение комнатПроект
- 03Состояние игрокаПроект
- 04Игровой циклПроект
- 05Обработка пользовательского вводаПроект
- 06Перемещение игрокаПроект
- 07Обработка некорректных ходовПроект
- 08Отображение выходовПроект
Обработка ошибок
3 уроков216- 01Функция error()Квиз
- 02Защищенные вызовы с pcall()ЗадачаКвиз
- 03Повторение — безопасное делениеЗадача
Продвинутая работа со строками
6 уроков641- 01string.gsub() для подстановкиЗадачаКвиз
- 02Введение в строковые шаблоныЗадачаКвиз
- 03string.find()ЗадачаКвиз
- 04string.match()ЗадачаКвиз
- 05Итерация с помощью string.gmatch()ЗадачаКвиз
- 06Итоги — Парсер лог-файловЗадача
Проект: Список контактов
Проект7 уроков1- 01Настройка проектаЗадача
- 02Основной циклПроект
- 03Добавление контактаПроект
- 04Список всех контактовПроект
- 05Поиск контактаПроект
- 06Удаление контактаПроект
- 07Обработка некорректного вводаПроект
Корутины для начинающих
7 уроков638- 01Что такое корутина?Квиз
- 02coroutine create и resumeЗадачаКвиз
- 03Пауза с помощью coroutine.yield()ЗадачаКвиз
- 04resume и yieldЗадачаКвиз
- 05Проверка статуса корутиныЗадачаКвиз
- 06Итоги — Генератор чиселЗадача
- 07Итоги — Векторная математикаЗадача
Раздел 3
Object Oriented Programming
Начать разделНачатьРазвернутьСвернутьDiscover how to organize code with classes, objects, and reusable structuresКонцепция 'self'
5 уроков532- 01Таблицы с функциямиЗадачаКвиз
- 02Явный 'self'ЗадачаКвиз
- 03Синтаксис с двоеточиемЗадачаКвиз
- 04Точка против двоеточияЗадачаКвиз
- 05Итоги — Движущаяся точкаЗадача
Паттерн прототипа класса
6 уроков641- 01Концепция прототипаЗадачаКвиз
- 02Связывание через __indexЗадачаКвиз
- 03Конструктор :new()ЗадачаКвиз
- 04Инициализация атрибутовЗадачаКвиз
- 05Независимые экземплярыЗадачаКвиз
- 06Итоги — АвтозаводЗадача
Состояние и поведение объектов
7 уроков748- 01Переменные экземпляраЗадачаКвиз
- 02ГеттерыЗадачаКвиз
- 03СеттерыЗадачаКвиз
- 04Вычисляемые свойстваЗадачаКвиз
- 05Форматирование строкЗадачаКвиз
- 06Проверка на равенствоЗадачаКвиз
- 07Повторение — Оценка студентаЗадача
Проект: Цифровой банк
Проект7 уроков1- 01Настройка проектаЗадача
- 02Метод пополненияПроект
- 03Метод снятияПроект
- 04Получение балансаПроект
- 05Информация о счетеПроект
- 06Перевод средствПроект
- 07Финальное тестирование банкаПроект
Перегрузка операторов в ООП
5 уроков531- 01Сложение объектовЗадачаКвиз
- 02Вычитание объектовЗадачаКвиз
- 03Конкатенация объектовЗадачаКвиз
- 04Сравнение объектов (<, >)ЗадачаКвиз
- 05Повторение — Математика кошелькаЗадача
Основы наследования
6 уроков643- 01Настройка наследованияЗадачаКвиз
- 02Наследование методовЗадачаКвиз
- 03Расширение конструктораЗадачаКвиз
- 04Добавление дочерних методовЗадачаКвиз
- 05Общее и уникальноеЗадачаКвиз
- 06Итоги: Иерархия фигурЗадача
Полиморфизм и переопределение
6 уроков640- 01Переопределение методовЗадачаКвиз
- 02Вызов родительских методовЗадачаКвиз
- 03Утиная типизацияЗадачаКвиз
- 04Общий интерфейсЗадачаКвиз
- 05Проверка типаЗадачаКвиз
- 06Итоги — Роли сотрудниковЗадача
Инкапсуляция
6 уроков644- 01Соглашения об именованииЗадачаКвиз
- 02Замыкания для приватностиЗадачаКвиз
- 03Доступ через замыканияЗадачаКвиз
- 04Таблицы только для чтенияЗадачаКвиз
- 05Логика валидацииЗадачаКвиз
- 06Итоги — Защищенное хранилищеЗадача
Композиция и примеси
6 уроков642- 01Отношение "Has-A"ЗадачаКвиз
- 02ДелегированиеЗадачаКвиз
- 03Простые примесиЗадачаКвиз
- 04Применение нескольких примесейЗадачаКвиз
- 05Примеси против наследованияЗадачаКвиз
- 06Итоги — Сборка роботаЗадача
Проект: Менеджер фигур
Проект7 уроков1- 01Настройка проектаЗадача
- 02Класс RectangleПроект
- 03Класс CircleПроект
- 04Метод PerimeterПроект
- 05Коллекция фигурПроект
- 06Общая площадьПроект
- 07Фильтрация фигурПроект
Паттерны проектирования (Lite)
5 уроков532- 01Фабричные функцииЗадачаКвиз
- 02Таблица SingletonЗадачаКвиз
- 03Паттерн IteratorЗадачаКвиз
- 04Observer (Слушатель)ЗадачаКвиз
- 05Итоги — Logger FactoryЗадача
Финальные испытания
4 уроков4- 01Повторение: Система инвентаряЗадача
- 02Повторение: Менеджер пользователейЗадача
- 03Повторение: Трекер счетаЗадача
- 04Итоговая проверка ООПЗадача
Курсы Lua
Практические курсы Lua - бесплатный старт в браузере.
Задачи для начинающих: практика базовых концепций
ПопулярноеПроверьте свои знания основ программирования на практике и попробуйте решить эти задачи на любом языке. Удачного кодинга!
Сертификат по окончании
- 20
- 20
Задачи по программированию
ПопулярноеПроверьте свои навыки решения задач по программированию, выполняя упражнения разного уровня сложности. Этот курс предназначен для тех, кто уже знаком с базовым синтаксисом любого языка программирования.
Сертификат по окончании
- 32
- 31
Задачи по программированию: Часть 2
Проверьте свои навыки решения задач с помощью упражнений разного уровня сложности. Курс предназначен для программистов, уже знакомых с базовым синтаксисом любого языка программирования, и является продолжением первой части «Задач по программированию».
Сертификат по окончании
- 25
- 24
Стек — Серия «Структуры данных» №1
В этом курсе вы изучите структуру данных Стек, создадите её с нуля на выбранном вами языке и попрактикуетесь в решении задач!
- 13
- 6
- 1
Кучи и очереди с приоритетом — Структуры данных №7
НовоеВ этом курсе вы изучите структуру данных Куча (основу очередей с приоритетом), создадите MinHeap с нуля на выбранном вами языке и попрактикуетесь в решении задач с её использованием!
Сертификат по окончании
- 14
- 6
- 1
Буткемп по выводу фигур из звездочек
Примените свои навыки решения задач в программировании, чтобы научиться выводить фигуры из звездочек любой сложности: от простых до самых продвинутых. В процессе вы освоите работу с вложенными циклами, условными операторами и математическими вычислениями.
- 30
- 28
Почему стоит изучать Lua на Coddy
- Запускайте настоящий код Lua прямо в браузере. Никакого интерпретатора Lua, никакой настройки toolchain. Каждый урок выполняет ваш Lua-скрипт на сервере и сразу показывает результат.
- Lua в реальном применении: переменные, управляющие конструкции, функции, таблицы (единственная настоящая структура данных в Lua), работа со строками, метатаблицы и паттерны OOP, обработка ошибок. Основы Lua, которые нужны для Roblox, Love2D или встраиваемого скриптинга.
- Подсказки ИИ помогают отлаживать Lua-скрипты и разбирать ошибки, не выдавая готового решения, - так типичные грабли вроде индексирования nil и массивов с единицы превращаются в полезные уроки.
- Бесплатный сертификат по Lua после завершения курса. Весомое дополнение к играм на Roblox, модам или встроенным скриптам, которые вы уже сделали.