Перейти к содержимому


Фотография

[1.7.10] ComputerCraft [1.74]


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2863

#2741 DIMFIRE

DIMFIRE

    Добытчик светокамня

  • Пользователи
  • Сообщений: 3412

Написал 01.03.2014 - 08:50

Прошу программу для черепашки. Цель-захват нод таумкрафта в банку. Принцип-черепашка ставится сверху/снизу/сбоку от ноды(на выбор программиста), ломает древесину с листвой и строит вокруг нее стеклянный куб, после чего выкладывает слой плитки сверху http://i.imgur.com/YNWkfEg.png
Если вы задаете вопрос " у меня не работает двигатель/машина/etc" то сопровождайте его скриншотами что и как у вас не работает

#2742 Dimus

Dimus

    Странник

  • Пользователи
  • Сообщений: 89

Написал 01.03.2014 - 14:18

Прошу программу для черепашки. Цель-захват нод таумкрафта в банку.

Не знаю, что такое ноды таумкрафта, но вот что то набросал
-- Для работы программы требуется Robust Turtle API --(см[paste][/paste] http://www[paste][/paste]computercraft[paste][/paste]info/wiki/Robust_Turtle_API)-- Черепаху устанавливаем на один слой ниже ноды лицом к нейglass=1 --Стекло кладем в первый слотtile=2  -- плитку - во второйt[paste][/paste]place(glass)  --ставим стекло под нодуt[paste][/paste]right() t[paste][/paste]forward()--ставим стекло вокруг нодыfor i=1,3 do  t[paste][/paste]up()   for j=1,4 do    t[paste][/paste]left()    for k=1,2 do t[paste][/paste]placeDown(glass)  t[paste][/paste]forward() end  end  end--ставим стекло на нодуt[paste][/paste]back() t[paste][/paste]left() t[paste][/paste]forward()t[paste][/paste]placeDown(glass)--ставим плиткуt[paste][/paste]up() t[paste][/paste]placeDown(tile)t[paste][/paste]back() t[paste][/paste]right() t[paste][/paste]forward()  for j=1,4 do    t[paste][/paste]left()    for k=1,2 do t[paste][/paste]placeDown(tile)  t[paste][/paste]forward() end  end
Заправлять черепаху ручками. Программу не тестировал, поэтому вопросы будут. Обращайся.

#2743 DIMFIRE

DIMFIRE

    Добытчик светокамня

  • Пользователи
  • Сообщений: 3412

Написал 01.03.2014 - 16:11

А ломать древесину и листву перед установкой стекла она будет?
Если вы задаете вопрос " у меня не работает двигатель/машина/etc" то сопровождайте его скриншотами что и как у вас не работает

#2744 Plem

Plem

    Добытчик алмазов

  • Пользователи
  • Сообщений: 716

Написал 01.03.2014 - 17:02

А ломать древесину и листву перед установкой стекла она будет?

Данная программа нет. Надо доводить до ума.
В этом вашем интернете не поймешь, кто прикалывается, а кто реально дебил =/

#2745 Dimus

Dimus

    Странник

  • Пользователи
  • Сообщений: 89

Написал 01.03.2014 - 19:50

А ломать древесину и листву перед установкой стекла она будет?

Будет. Это заложено в Robust Turtle API

#2746 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 01.03.2014 - 20:46

На ванильном CC http://pastebin.com/Bj3M0xsP Ставить прямо под ноду. Все переменные в начале.

V6xCzSN.png


#2747 DIMFIRE

DIMFIRE

    Добытчик светокамня

  • Пользователи
  • Сообщений: 3412

Написал 01.03.2014 - 23:11

Черепашка обычная или лесоруб?
Если вы задаете вопрос " у меня не работает двигатель/машина/etc" то сопровождайте его скриншотами что и как у вас не работает

#2748 Dimus

Dimus

    Странник

  • Пользователи
  • Сообщений: 89

Написал 01.03.2014 - 23:19

лесоруб либо шахтерзы: программа проверена - работает

#2749 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 01.03.2014 - 23:33

Так как в любом случае надо 3 алмаза, делай шахтера. Она все блоки может ломать.

V6xCzSN.png


#2750 DIMFIRE

DIMFIRE

    Добытчик светокамня

  • Пользователи
  • Сообщений: 3412

Написал 02.03.2014 - 18:15

Спасибо, отлично работает.
Если вы задаете вопрос " у меня не работает двигатель/машина/etc" то сопровождайте его скриншотами что и как у вас не работает

#2751 Lexor

Lexor

    Добытчик угля

  • Пользователи
  • Сообщений: 399
  • Откуда: Иркутская область

Написал 03.03.2014 - 02:19

На ванильном CC http://pastebin.com/Bj3M0xsP Ставить прямо под ноду. Все переменные в начале.

Отличный код в плане удобочитаемости и устойчивости от неправильных действий. :good: +Лично для меня стало открытием то что функцию можно вызывать из ее (функции) тела.

#2752 adami

adami

    Добытчик угля

  • Пользователи
  • Сообщений: 318
  • Ник в Minecraft:
    _adami_

Написал 03.03.2014 - 09:07

Рекурсия для тебя открытие? Наверное, стоит почитать основы программирования.

#2753 Lexor

Lexor

    Добытчик угля

  • Пользователи
  • Сообщений: 399
  • Откуда: Иркутская область

Написал 04.03.2014 - 02:22

Рекурсия для тебя открытие? Наверное, стоит почитать основы программирования.

В общем понятии рекурсия для меня не открытие, но я не встречал ранее в просмотренных мною программах вызова функции из ее тела. Сам сталкивался ранее с ситуациями, где бы очень пригодилось это знание, но выходил из них менее красивыми методами, используя циклы.

#2754 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 07.03.2014 - 13:03

но выходил из них менее красивыми методами, используя циклы.

На самом деле, как раз таки боле эффективное решение - развернуть рекурсию в цикл.

Естественно, есть случаи где сделать это затруднительно, и приходится использовать рекурсию.

Кстати, таблица может содержать в себе себя, а функция может принять себя в качестве собственного аргумента. А еще таблицу можно использовать как функцию (функтор), а функцию как таблицу (ну почти).

---
Я тут заглянул в гайд по луа, и обнаружил несколько недочетов:


    [*] nil - это не значение, а тип переменной.
    [*] table - не массив. Это таблица. А уже использовать ее можно и как массив, и как ассоциативный массив, и как структуры, объекты. Она же используется в качестве метатаблиц и пространств имен.
    Так же с ее помощью реализуют ссылки, списки, очереди, и другие структуры данных.
    [*] Индеком таблицы может быть любой тип за исключением nil. Даже функции и другие таблицы.
    Помимо этого, строковые индексы могут содержать пробелы в любом количестве, или даже не содержать ничего кроме пробела. Если сказать более обще, любая строка в принципе может быть индексом.
    [*] Забыт унарный оператор #. Он возвращает длину для строк и размер для таблиц с числовыми индексами без дыр.
    [*] Забыто elseif для условий.
    [*] Забыта такая важная вешь, как local. По умолчанию все переменные в луа - глобальные. Даже те, которые инициированы внутри функций или других файлах.
    [*] Забыт цикл for in do end.
    [*] Казалось бы нонсенс, но функции в lua не имеют имени.
    Все дело в том, что функции в lua - так называемые объекты первого класса. С ними можно выполнять такие же действия, как и с другими значениями. Т.е. их можно присваивать, передавать в качестве аргумента в функцию (и возвращать тоже), и использовать их в качестве индексов таблицы.

    Мы вполне можем сделать так:
    function foo() endbar = foobar()
    Сама функция при этом остается анонимной (безымянной), просто на нее указывает переменная, которая как раз и обладает именем.
    function foo() end-- это равноценноfoo = function() end
    [*]Есть еще множество вещей, вроде метатаблиц (metatable), метасобытий (metaevent), окружения (enviroment), объектно ориентированные фичи, замыкания, хуки, и т.д.
    Не уверен только, что все из этого доступно в CC.

    Из более общего пропущены комментарии, разные способы написания строковых литералов, и переменное число аргументов функций.
    [/list]

Для форумчан можно просто Олег.

Скрытый текст

#2755 Lexor

Lexor

    Добытчик угля

  • Пользователи
  • Сообщений: 399
  • Откуда: Иркутская область

Написал 08.03.2014 - 17:45

Заметил досадный баг: команда turtle.compare() выдает false если расположить "Oak wood" срезом набок и true, если срез смотрит вверх, сравнение разумеется относительно расположенного в инвентаре черепахи блока вышеназванной древесины.

#2756 adami

adami

    Добытчик угля

  • Пользователи
  • Сообщений: 318
  • Ник в Minecraft:
    _adami_

Написал 09.03.2014 - 21:45

Получается, луа в CC более развит, чем по документации?

#2757 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 09.03.2014 - 21:57

По какой именно документации? Которая на lua.org?

V6xCzSN.png


#2758 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 10.03.2014 - 16:07

Получается, луа в CC более развит, чем по документации?

Наоборот. Скорее всего в СС Lua урезан в сравнении с чистой версией. Просто документацию читали невнимательно, там все это есть.

Кстати, еще не известно, какой версии Lua используется в СС. 5.1 или 5.2. А возможно и более старые.

Добавлено спустя 51 минуту 23 секунды:
Итак, немного покопался в CC последней версии. Он использует Добавлено спустя 5 минут 27 секунд:
С разбегу не достучался до функции require, таблицам debug, package, зато есть coroutine.

Добавлено спустя 34 минуты 5 секунд:
Полный список функций и библиотек доступных в Lua в CC 1.58:
Скрытый текст


#2759 Lexor

Lexor

    Добытчик угля

  • Пользователи
  • Сообщений: 399
  • Откуда: Иркутская область

Написал 30.03.2014 - 03:28

27го марта вышла обновленная версия 1.6. Множество нововведений, DW20 снял спотлайт.

#2760 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 31.03.2014 - 23:18

Хм, карманные компьютеры, многозадачность.

Для форумчан можно просто Олег.

Скрытый текст


Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных