понедельник, 4 февраля 2013 г.

Гайд по черепашкам ComputerCraft

Итак, так как я все таки никогда не писал никаких гайдов, я не обещаю что все будет идеально, но я все равно попробую.

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

Начнем пожалуй с самого основного - КРАФТА
Крафт самой черепахи










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








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



















Правый клик по черепахе



















Вот так выглядит интерфейс нашей черепахи. Всю верхнюю часть занимает консоль управления, внизу расположились два инвентаря, один наш собственный (слева) , а другой черепаший(справа). В инвентаре один слот выделен, изначально это первый слот , но мы можем поменять его с помощью команды.
Так как черепаха сама по себе является компьютером, то любая программа для компьютера будет работать и на ней.
Что бы написать программы нам понадобится ввести  команду редактирования
 edit *название_программы*
Например мы создадим программу под названием "turtle_1", для этого введем команду
edit turtle_1
Теперь посмотрим что же все таки эта черепаха умеет, а умеет она многое:

   Во первых команды движения

turtle.up() - Вверх
turtle.down() - Вниз
turtle.forward() - Вперед
turtle.back() - Назад
turtle.turnLeft() - Поворот налево
turtle.turnRight() - поворот направо

   Дальше команды разрушения блока (добычи)

turtle.dig() - Сломать блок перед собой
turtle.digUp() - Сломать блок над собой
turtle.digDown() - Сломать блок под собой  

   Проверка наличия блоков, возвращает true если блок обнаружен и false если блока нету

turtle.detect() - Перед черепахой 
turtle.detectUp() - Сверху черепахи
turtle.detectDown() - Снизу черепахи

   У нас есть инвентарь черепахи и есть команды для работы с ним

turtle.select(n) - Выбрать слот n
turtle.getItemCount(n) - Возвращает количество блоков в слоте n
turtle.getItemSpace(n) - Возвращает кол-во свободного места в слоте n
turtle.drop(i) - Выбросить i предметов из выбранного слота (если перед черепахой сундук то она положит предметы в него), так же если не указывать в скобках ничего, черепаха выкинет все что есть в слоте
turtle.dropUp() - Выбросить предметы над собой или положить в сундук сверху
turtle.dropDown() Выбросить предметы под себя или положить в сундук снизу
   Черепаха умеет ставить блоки, ставит она блоки которые лежат в выбранном слоте

turtle.place() - Поставить блок перед собой
turtle.placeUp() - Поставить блок над собой
turtle.placeDown() - Поставить блок под собой

   Для того чтобы черепаха смога двигаться ее придется угостить углем

turtle.refuel(i) - Заправляет в черепаху i топлива из выбранного слота, если не указывать количество то сожрет все что есть в выбранном слоте
turtle.getFuelLevel() - Возвращает количество неиспользованного топлива

Итак с основными командами познакомились, теперь давайте напишем простенькую программу копания



Эта коротенькая программа  заставляет черепаху прокопать туннель длинной 80, шириной 1 и высотой в 3 клетки
Пробежимся по командам

turtle.refuel(1)  - Заправляем черепаху топливом, то есть для того чтобы программа заработала нам надо поместить в выделенный слот черепахи один уголь. Так как в программе есть только одна команда движения то черепаха проедет столько сколько вы в нее заправите угля, в нашем случае это 1 уголь и на нем она проедет 80 клеток (при большем количестве угля черепахе может не хватить места в ее инвентаре)
while true  do  - Начинаем бесконечный цикл
    turtle.digUp() - Ломаем блок над собой
    turtle.digDown() - Ломаем блок под собой
    turtle.dig() - Ломаем блок перед собой
    while turtle.detectUp() do - Второй цикл который поможет избавиться от падающего на черепаху гравия 
          turtle.digUp() 
         os.sleep(0.5) - Эта команда говорит черепахе ничего не делать в течении 0.5 секунда, нужна она для того чтобы если над нами есть гравий он успел упасть на черепаху
    end - Окончание второго цыкла 
    turtle.forward() - Движение вперед, так как топливо у нас ограничено несмотря на бесконечность цикла наша черепаха будет двигаться вперед только 80 клеток    
end - Окончание первого цыкла 

Мы написали код и теперь его надо сохранить. Нажимаем кнопку Ctrl, выбираем там пункт Saveи жмем Enter. Теперь выходим из редактирования программы- нажимаем кнопку Ctrl, выбираем там пункт Exit.
Чтобы запустить программу на черепахе нам надо положить в выделенный слот один уголь и ввести название нашей программы, в нашем случае turtle_1. 

ВАЖНО: Если вы сломаете черепаху, то программа пропадет. Поэтому я вам советую дать имя своей черепахе для этого надо ввести 
lable set name1
и теперь если вы сломаете черепаху и потом ее снова поставите весь код останется на ней, и вам не придется его заново вводить.


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

15 комментариев:

  1. Великолепный гайд, довольно таки подробно написано.

    ОтветитьУдалить
  2. Согласен с Дарт Вейдером ,но хотелось бы узнать как копать черепахой три блока верх и вниз.

    ОтветитьУдалить
    Ответы
    1. Прийдется работать с циклом и подниматься и опускаться 3 раза

      Удалить
  3. Всё очень понятно и просто.продолжай в том же духе)твой подписчик Chipmunk.

    ОтветитьУдалить
  4. Гайд отличный!Но я заметил ошибку.Ты написал команду смены имени черепахи неправильно.Вот как ты написал эту команду "lable set name1" , а правильно "label set name1" исправь!

    ОтветитьУдалить
  5. Этот комментарий был удален автором.

    ОтветитьУдалить
  6. Напиши гайд о строителе-черепашке :3
    а то у меня не получается чего-то ставить блоки,
    как бы она работает,всё...туда-сюда,но не ставит.

    ОтветитьУдалить
  7. Люди-люди-люди,
    про то что дать название,
    оно даётся не командой "lable"
    а командой "label"
    опечатка^

    ОтветитьУдалить
  8. что делать если пишет trutle_1:4:attempt to index?(a nil value)????

    ОтветитьУдалить
  9. Огромное спасибо, очень помог!

    ОтветитьУдалить
  10. Этот комментарий был удален автором.

    ОтветитьУдалить
  11. про цикл мало рассказано
    а так супер!

    ОтветитьУдалить
  12. А как зделать штоб черепаха викопала допустим 20 блоков потом возрашаляся назад до сундука виложила все и сместилася на 1 блок в право и орять начала копать?

    ОтветитьУдалить