изучение lua в моде на майнкрафт

[Guide] Изучаем ComputerCraft [часть 2]

изучение lua в моде на майнкрафт

Всем привет, с вами снова poccu, и сегодня я решил
сделать вторую часть своего гайда по ComputerCraft.
В этой части мы продолжим изучать команды CraftOS,
и попробуем написать и разобрать по частям программу на Lua.
Если вдруг кто-то не читал первую часть, то вот она: Click!

В прошлом уроке мы немного научились работе с файлами в CraftOS.
Сегодня мы будем продолжать учится работе с файлами,
а также попробуем написать свою первую программу.

Давайте вспомним то, что мы узнали на прошлом уроке:

Для копирования файлов в CraftOS используется команда copy.

Например: У нас есть файл под названием test. Если мы напишем
команду copy test test1, то рядом с этим файлом появится файл под названием test1,
с полностью идентичной информацией в нем.

А теперь представим, что нам нужно переместить файл в другое место.
Мы можем сначала скопировать его в нужное место командой copy, а потом
удалить оригинал, но это не очень удобно. Для нашего с вами
удобства, существует команда move.

изучение lua в моде на майнкрафт

Теперь представим то, что нам нужно создать папку (директорию).
Для этого нам потребуется команда mkdir.

Если мы напишем mkdir folder1, то мы создадим новую пустую
папку с именем folder1, в которой мы теперь можем хранить файлы.

Теперь представим такую ситуацию:
Мы пользуемся обычным компьютером (не золотым), икогда мы пишем
команду dir или ls, мы не можем понять, какие это файлы. В золотом
компьютере папки помечены зеленым цветом, а в
обычном компьютере они не помечены вообще.
изучение lua в моде на майнкрафт

Так что же нам делать? Для этого есть команда type.
Она говорит нам, какой это тип файла.

изучение lua в моде на майнкрафт

Отлично, с работой с файлами в CraftOS мы разобрались!
Теперь я просто опишу некоторые команды,
и мы приступим изучать программирование!

Отлично! Вот мы и можем приступать к программированию.
Программирование происходит не в ОС CraftOS, а в
файлах, которые создаются командой edit. Давайте напишем нашу первую программу,
а потом разберем ее.

изучение lua в моде на майнкрафт

Для запуска программы мы должны обратно вернуться в CraftOS.
Сейчас мы должны просто написать название программы, и ничего больше.
После нажатия кнопки Enter мы увидим, что на экране появилась надпись
Hello world.
изучение lua в моде на майнкрафт

Давайте все разберем по порядку:

И так, давайте я вам расскажу, зачем нужны эти кавычки, и почему
без них мы не смогли обойтись.
В Lua присутствует несколько типов данных.

Первый из них — текстовый (String). Мы как-раз им и пользовались.
В Lua, как и во многих других языках программирования, кавычки используются
для отображения текста. Именно поэтому надпись Hello World мы заключили в кавычки.
В String’е могут находиться абсолютно любые знаки (буквы, числа, спецсимволы).

Второй — Boolean. В нем могут храниться лишь значения true (истина) и false (ложь).

Третий — числовой. В нем хранятся различные числа.

Ну и четвертый — nil. Nil это пустое значение.

Это не все типы данных, которые есть в Lua,
но нам пока-что будет достаточно и этого.

Теперь немного про переменные.
Переменные используются для хранения значений. Представим себе:
Пользователь вводит какие-либо данные в программу, которые понадобятся
программе чуть-позже. Для того, чтобы сохранить эти данные, можно использовать
переменные. В переменных могут хранится абсолютно любые типы данных.

И еще кое-что: для ввода данных пользователем нужно использовать read().

Вот пример:

При запуске программы нас попросит ввести данные с клавиатуры.
изучение lua в моде на майнкрафт

После ввода данных и нажатии кнопки Enter, введенные данные запомнятся
в переменной a, и будут выведены командой print.
изучение lua в моде на майнкрафт

Думаю, что на сегодня все. Если вы что-то не поняли, перечитайте гайд
или спросите об этом в комментариях. С вами был poccu, всем пока!

Источник

Изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

В этой теме вы можете делится программами для мода ComputerCraft написаными на языке программирования Lua.

1. Описание программы: программа копает туннель в глубь 3×3.
2. Код программы:

for i=0, 10 do
turtle.dig()
turtle.forward()
turtle.digUp()
turtle.dig()
turtle.digDown()
turtle.turnLeft()
turtle.dig()
turtle.forward()
turtle.turnRight()
turtle.digUp()
turtle.dig()
turtle.digDown()
turtle.turnRight()
turtle.forward()
turtle.forward()
turtle.turnLeft()
turtle.dig()
turtle.digUp()
turtle.digDown()
turtle.turnLeft()
turtle.forward()
turtle.turnRight()
end

изучение lua в моде на майнкрафт

Слишком большой код, используйте функции.
Мои программы:
Miner.
Закидываете топливо, пишите refuel all. После этого в 1 слот черепашки кладете факелы во 2 слот эндерчест. После прохода 40 блоков черепашка скидывает все в сундук.
http://pastebin.com/BgteT1wy

изучение lua в моде на майнкрафт

Заправляем черепашку топливом
в 1 слот ложим факели
в 2 слот сундуки
копает 1х3
в глубь 250 блоков

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

Исправленная версия уже написана выше

Последняя редакция — Андрей Фролов в 13:50

изучение lua в моде на майнкрафт

изучение lua в моде на майнкрафт

Моя версия программы копающей карьер: http://pastebin.com/HFiuwgUG если будете отвечать пишите версию программы.
+ само заправку из 1 слота, ендерчест 2-й и запрашивание размеров

Внимание из-за монстров или игроков на пути карьер может сбиться в расчётах!

Последняя редакция — Андрей Фролов сегодня в 18:01

Источник

Minecraft Wiki

Из-за новой политики Microsoft в отношении сторонних ресурсов, Minecraft Wiki больше не является официальной. В связи с этим были внесены некоторые изменения, в том числе и обновлён логотип вики-проекта. Подробности на нашем Discord-сервере.

OpenComputers/Стандартные библиотеки Lua

В OpenComputers доступны многие функции стандартных библиотек Lua. Однако некоторые из них могут быть ограничены, или переопределены.

Подробнее о стандартных библиотеках Lua вы можете узнать в официальной документации здесь.

Содержание

Различия [ ]

Базовые функции [ ]

Сопрограммы (Coroutine) [ ]

Набор функций по управлению сопрограммами coroutine доступен в моде без особенных изменений.

Примечание: функции coroutine.resume и coroutine.yield переопределены в моде с учетом того, что программа прерывает свое выполнение, если она не отвечает долгое время (точное значение смотрите в настройках мода).

Модули [ ]

Функции работы с модулями package переопределены в моде OpenComputer. Однако должны работать аналогично, за исключением следующих функций:

Последние две не используются в связи с тем, что невозможна загрузка кода C из OpenComputers.

Операции со строками [ ]

Примечание: функции GPU API (а также term.write и print ) полностью совместимы со строками в формате UTF-8. Кроме того, для облегчения работы с форматом Unicode, OpenComputers предоставляет библиотеку Unicode API.

Операции с таблицами [ ]

Математические функции [ ]

Оригинальная библиотека математических функций math доступна с незначительными изменениями:

Битовые операции [ ]

Оригинальная библиотека битовых операций bit32 доступна без изменений.

Операции ввода/вывода [ ]

Функции библиотеки io переопределены для работы с консолью и файловой системой OpenComputers.

Функции по большей части функционально эквивалентны оригинальным. Они могут возвращать отличающиеся сообщения ошибки.

Функции операционной системы [ ]

Функции библиотеки os частично переопределены.

Кроме того добавлена одна новая функция:

Источник

Программирование на Lua в Minecraft для начинающих

Невероятная популярность игровой вселенной Minecraft обусловлена во многом свободой действий, которая дает игрокам неограниченные возможности для эксперимента и творчества. Именно поэтому игра-конструктор давно уже вышла за рамки простой «компьютерной игрушки» и применяется как средство обучения во многих учебных заведениях.

Уникальный курс «Программирование на Lua в Minecraft» позволит вашему ребенку от получения базовых навыков написания кода перейти к основам построения игрового искусственного интеллекта и автономной системы роботов. В ходе обучения ребята осваивают один из самых интересных современных языков программирования.

Lua представляет собой мощный, быстрый, расширяемый и легко встраиваемый скриптовый язык для написания программ. Он был разработан в 1993 году в Католическом университете Рио-де-Жанейро. В настоящее время широко используется и является ведущим языком сценариев в компьютерных играх (например, таких как World of Warcraft, Angry Birds, X-Plane, S.T.A.L.K.E.R.) и в большом количестве различных приложений.

Основные преимущества языка:

Чем будет интересен и полезен курс для детей?

Курс проводится опытным педагогом-практиком и предполагает изучение языка Lua от простого к сложному. В ходе интересных практических занятий ваш ребенок:

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

Курс рассчитан на детей в возрасте 12-16 лет. Если вам меньше, то удостоверьтесь, что ребенок уверенно набирает текст и знаком с английской раскладкой клавиатуры.

Приходите, мы поможем ребенку внести вклад в реальный мир, пробуя свои силы в мире виртуальном!

Системные требования к компьютеру

Просьба убедиться, что Ваш компьютер подходит для курса. Рекомендации по ссылке

Инструкция по установке программ для курса «Программирование на Lua в Minecraft».

По завершении курса каждый ученик получает именной сертификат от CODDY

Источник

Santa Simplicita

Просто писать о простом — не так и просто…

Lua за 60 минут

Я сентиментальный программист. Иногда я влюбляюсь в языки программирования, и тогда я могу говорить о них часами. Одним из этих часов я поделюсь с вами.

Lua? Что это?

Lua — простой встраиваемый язык (его можно интегрировать с вашими программами, написанными на других языках), легкий и понятный, с одним типом данных, с однообразным синтаксисом. Идеальный язык для изучения.

Зачем?

Lua может вам пригодится:

* если вы геймер (плагины для World of Warcraft и множества других игр)
* если вы пишете игры (очень часто в играх движок пишут на C/C++, а AI — на Lua)
* если вы системный программист (на Lua можно писать плагины для nmap, wireshark, nginx и других утилит)
* если вы embedded-разработчик (Lua очень быстрый, компактный и требует очень мало ресурсов)

Что надо для того, чтобы читать дальше?

1. Научитесь программировать. Хотя бы немного. Не важно на каком языке.
2. Установите Lua. Для этого либо скачайте здесь версию 5.2 (http://www.lua.org/download.html), либо ищите ее в репозиториях. Версия 5.1 тоже пойдет, но знайте, что она очень старая.

Все примеры из статьи запускайте в терминале командой наподобие «lua file.lua».

Первые впечатления

Lua — язык с динамической типизацией (переменные получают типы «на лету» в зависимости от присвоенных значений). Писать на нем можно как в императивном, так и в объектно-ориентированном или функциональном стиле (даже если вы не знаете как это — ничего страшного, продолжайте читать). Вот Hello world на Lua:

Что уже можно сказать о языке:

* однострочные комментарии начинаются с двух дефисов «—»
* скобки и точки-с-запятыми можно не писать

Операторы языка

Набор условных операторов и циклов довольно типичен:

В выражениях можно использовать такие вот операторы над переменными:

= (не-равно, да-да, вместо привычного «!=»)
* конкатенация строк (оператор «..»), напр.: s1=»hello»; s2=»world»; s3=s1..s2
* длина/размер (оператор #): s=»hello»; a = #s (‘a’ будет равно 5).
* получение элемента по индексу, напр.: s[2]

Битовых операций в языке долгое время не было, но в версии 5.2 появилась библиотека bit32, которая их реализует (как функции, не как операторы).

Типы данных

Я вам соврал, когда сказал что у языка один тип данных. Их у него много (как и у каждого серьезного языка):

* nil (ровным счетом ничего)
* булевы числа (true/false)
* числа (numbers) — без деления на целые/вещественные. Просто числа.
* строки — кстати, они очень похожи на строки в паскале
* функции — да, переменная может быть типа «функция»
* поток (thread)
* произвольные данные (userdata)
* таблица (table)

Если с первыми типами все понятно, то что же такое userdata? Вспомним о том, что Lua — язык встраиваемый, и обычно тесно работает с компонентами программ, написанными на других языках. Так вот, эти «чужие» компоненты могут создавать данные под свои нужды и хранить эти данные вместе с lua-объектами. Так вот, userdata — и есть подводная часть айсберга, которая с точки зрения языка lua не нужна, но и просто не обращать внимания на нее мы не можем.

А теперь самое важное в языке — таблицы.

Таблицы

Я вам снова соврал, когда сказал, что у языка 8 типов данных. Можете считать что он один: всё — это таблицы (это, кстати, тоже неправда). Таблица — это очень изящная структура данных, она сочетает в себе свойства массива, хэш-таблицы («ключ»-«значение»), структуры, объекта.

ПОДУМАЙТЕ: чему равно a[2] в случае разреженного массива?

В примере выше таблица ведет себя как массив, но на самом деле — у нас ведь есть ключи (индексы) и значения (элементы массива). И при этом ключами могут быть какие угодно типы, не только числа:

Кстати, раз уж у таблицы есть ключи и значения, то можно в цикле перебрать все ключи и соответствующие им значения:

А как же объекты? О них мы узнаем чуть позже, вначале — о функциях.

Функции

Вот пример обычной функции.

Функции языка позволяют принимать несколько аргументов, и возвращать несколько аргументов. Так аргументы, значения которых не указаны явно, считаются равными nil.

ПОДУМАЙТЕ: зачем может понадобиться возвращать несколько аргументов?

Функции могут принимать переменное количество аргументов:

Поскольку функции — это полноценный тип данных, то можно создавать переменные-функции, а можно передавать функции как аргументы других функций

Объекты = функции + таблицы

Раз мы можем сохранять функции в переменных, то и в полях таблиц тоже сможем. А это уже получаются как-бы-методы. Для тех, кто не знаком с ООП скажу, что основная его польза (по крайней мере в Lua) в том, что функции и данные, с которыми они работают находятся рядом — в пределах одного объекта. Для тех, кто знаком с ООП скажу, что классов здесь нет, а наследование прототипное.

Перейдем к примерам. Есть у нас объект, скажем, лампочка. Она умеет гореть и не гореть. Ну а действия с ней можно сделать два — включить и выключить:

А если лампочку сделать объектом, и функции turn_off и turn_on сделать полями объекта, то получится:

Мы вынуждены передавать сам объект лампочки в качестве первого аргумента, потому что иначе наша функция не узнает с какой именно лампочкой надо работать, чтобы сменить состояние on/off. Но чтобы не быть многословными, в Lua есть сокращенная запись, которую обычно и используют — lamp:turn_on(). Итого, мы уже знаем несколько таких упрощений синтаксиса:

Продолжая говорить о сокращениях, функции можно описывать не только явно, как поля структуры, но и в более удобной форме:

Специальные функции

Некоторые имена функций таблиц (методов) зарезервированы, и они несут особый смысл:

Собственно, мы еще можем заменить функцию print с помощью «print = myfunction», да и много других хакерских дел можно сделать.

Области видимости

Переменные бывают глобальные и локальные. При создании все переменные в Lua являются глобальными.

Для указания локальной области видимости пишут ключевое слово local:

Не забывайте об этом слове.

Обработка ошибок

Часто, если возникают ошибки, надо прекратить выполнение определенной функции. Можно, конечно, сделать множество проверок и вызывать «return», если что-то пошло не так. Но это увеличит объем кода. В Lua используется что-то наподобие исключений (exceptions).

Ошибки порождаются с помощью функции error(x). В качестве аргумента можно передать все, что угодно (то, что имеет отношение к ошибке — строковое описание, числовой код, объект, с которым произошла ошибка и т.д.)

Обычно после этой функции вся программа аварийно завершается. А это надо далеко не всегда. Если вы вызываете функцию, которая может создать ошибку (или ее дочерние функции могут создать ошибку), то вызывайте ее безопасно, с помощью pcall():

Стандартные библиотеки

Стандартных библиотек мало, зато это позволяет запускать Lua где угодно. Подробнее можно получить их список здесь — http://www.lua.org/manual/5.2/manual.html

Нестандартных библиотек много, их можно найти на LuaForge, LuaRocks и в других репозиториях.

Между Lua и не-Lua

ВНИМАНИЕ: эту часть рекомендуется читать людям со знанием языка C.

А если нам недостаточно функциональности стандартных библиотек? Если у нас есть наша программа на C, а мы хотим вызывать ее функции из Lua? Для этого есть очень простой механизм.

Допустим, мы хотим создать свою функцию, которая возвращает случайное число (в Lua есть math.random(), но мы хотим поучиться). Нам придется написать вот такой код на C:

Т.е. Lua предоставляет нам функции для работы с типами данных, для получения аргументов функций и возврата результатов. Функций очень мало, и они довольно простые. Теперь мы собираем нашу библиотеку как динамическую, и можем использовать функцию rand():

А если мы хотим вызывать код, написанный на Lua из наших программ? Тогда наши программы должны создавать виртуальную машину Lua, в которой и будут выполняться Lua-скрипты. Это намного проще:

Вы теперь можете писать на Lua. Если вы узнаете интересные моменты про Lua, которые можно было бы отразить в статье — пишите!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *