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


Фотография

Ферма кактусов

ферма кактус robot

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

#1 Оффлайн   bob558

bob558

    Пользователь

  • Пользователи
  • PipPipPip
  • 66 сообщений

Отправлено 24 Ноябрь 2016 - 09:48

Это моя первая программа на этом ресурсе.  Буду рад вашей критике, идеям по оптимизации кода.

 

Загрузить можно по ссылке  http://pastebin.com/bzBkTvkZ

 

или набрать в терминале:

pastebin get bzBkTvkZ cactus

Snimokekra_1808937_24163381.jpg

 

Начальные установки:


6   local len,w = 8,8   -- длинна и ширина поля
7   local s = 200 -- время ожидания созревания
 

В 6 строке кода надо указать размеры вашего поля. По умолчанию стоит 8 х 8. В 7 строке время полного созревания урожая.

Робота нужно установить на высоте 4 блока от уровня будущего поля. За ним поставить сундук. Робот должен обладать Апгрейтом -солнечная панель для подзарядки.

Snimokekra_9380846_24163402.jpg

 

Если поле еще не сформированно, то робот сам может засеять поле кактусами в шахматном порядке.

 

Snimokekra_8010132_24163387.jpg

cactpng_3166873_24160070.jpg

 

Робот будет информировать вас о количестве высаженных кактусов, заряде батареи. При необходимости подзаряжаться.

 

Snimokekra_3629333_24160234.jpg

 

 

P.S. Хочу сказать спасибо Alex, за гайд 

http://computercraft...e-for-in-pairs/

Эта статья стала настольной книгой, чтобы разобраться в работе таблиц.

Fingercomp за объяснение логики lua.

Отдельное спасибо Totoro и  qwertyMAN за быстрые ответы на мои порой нубские вопросы.

 

Спасибо вам за терпение.   :)


Сообщение отредактировал bob558: 24 Ноябрь 2016 - 16:39


#2 Оффлайн   davial

davial

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 433 сообщений
  • ГородТроон в системе Канопуса.

Награды

                    

Отправлено 24 Ноябрь 2016 - 14:29

1. Добавь скрин : сбоку от поля, на уровне робота - чтобы визуально было видно, уровень установки робота, относительно кактусов.

2. Будешь ли добавлять статистику сбора урожая ? Сколько собрал - за 1 проход, и сколько - за всё время.


Сообщение отредактировал davial: 24 Ноябрь 2016 - 14:29


#3 Оффлайн   bob558

bob558

    Пользователь

  • Автор темы
  • Пользователи
  • PipPipPip
  • 66 сообщений

Отправлено 24 Ноябрь 2016 - 15:19

1. Добавь скрин : сбоку от поля, на уровне робота - чтобы визуально было видно, уровень установки робота, относительно кактусов.

2. Будешь ли добавлять статистику сбора урожая ? Сколько собрал - за 1 проход, и сколько - за всё время.

 

Добавил новые картинки. 

 

Да, буду добавлять статистику. Спасибо!



#4 Оффлайн   Doob

Doob

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 613 сообщений

Награды

                                

Отправлено 24 Ноябрь 2016 - 16:00

У рoбoтoв есть не oчевидная прoблема, если ему дать кoманду сделать шаг, тo oн мoжет ее и не выпoлнить из-за лагoв сервера, пoэтoму каждoе движение дoлжнo быть пoдтвержденo.
Например: if robor.move(side) then i=i+1 end или даже
function move(side)
  if not robot.detect(side) and not robot.move(side) then
    move(side)
  end
end
Чтoбы рабoтать сo счетчикoм, тo лучше так пoдтверждать движение пo всем oсям, так рoбoт будет знать свoю пoзицию и прoще будет егo oтправить на тoчку старта.
Нo я изначальнo, все фермы делал без всяких счетчикoв, рoбoт узнавал, кoгда надo пoвoрачивать дoстигнув стены, кoтoрая указывала границы пoля.

Сообщение отредактировал Doob: 24 Ноябрь 2016 - 16:02

  • davial это нравится

#5 Оффлайн   bob558

bob558

    Пользователь

  • Автор темы
  • Пользователи
  • PipPipPip
  • 66 сообщений

Отправлено 24 Ноябрь 2016 - 16:37

У рoбoтoв есть не oчевидная прoблема, если ему дать кoманду сделать шаг, тo oн мoжет ее и не выпoлнить из-за лагoв сервера, пoэтoму каждoе движение дoлжнo быть пoдтвержденo.
Например: if robor.move(side) then i=i+1 end или даже

function move(side)
  if not robot.detect(side) and not robot.move(side) then
    move(side)
  end
end
Чтoбы рабoтать сo счетчикoм, тo лучше так пoдтверждать движение пo всем oсям, так рoбoт будет знать свoю пoзицию и прoще будет егo oтправить на тoчку старта.
Нo я изначальнo, все фермы делал без всяких счетчикoв, рoбoт узнавал, кoгда надo пoвoрачивать дoстигнув стены, кoтoрая указывала границы пoля.

 

Дельное замечание. Но со своей стороны я даю некоторое время серверу подумать о лагах после каждого шага робота. Пока ошибок в перемещении не было.

robot.forward(); os.sleep(0.3)


#6 Онлайн   Totoro

Totoro

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 237 сообщений

Награды

                                   

Отправлено 24 Ноябрь 2016 - 16:37

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

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



#7 Оффлайн   bob558

bob558

    Пользователь

  • Автор темы
  • Пользователи
  • PipPipPip
  • 66 сообщений

Отправлено 24 Ноябрь 2016 - 16:43

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

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

 

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

os.sleep(0.3)

как он стал строго следовать программе. 



#8 Онлайн   Totoro

Totoro

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 237 сообщений

Награды

                                   

Отправлено 24 Ноябрь 2016 - 16:51

Да, такое случается, тоже замечал.

Но почему - непонятно. Надо будет расследовать.


  • bob558 и Saintmare это нравится

#9 Оффлайн   Doob

Doob

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 613 сообщений

Награды

                                

Отправлено 24 Ноябрь 2016 - 16:54

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

#10 Оффлайн   davial

davial

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 433 сообщений
  • ГородТроон в системе Канопуса.

Награды

                    

Отправлено 24 Ноябрь 2016 - 18:36

Да, такое случается, тоже замечал.

Но почему - непонятно. Надо будет расследовать.

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


Сообщение отредактировал davial: 25 Ноябрь 2016 - 12:11


#11 Оффлайн   ALeXeR

ALeXeR

    Продвинутый пользователь

  • Пользователи
  • PipPipPipPip
  • 149 сообщений
  • ГородОдесса

Отправлено 25 Ноябрь 2016 - 00:03

Робот - блок, вполне возможно что с ним происходит то-же самое, что и при разрушении блоков при плохом пинге или перегрузе







Темы с аналогичным тегами ферма, кактус, robot

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

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


Яндекс.Метрика