使用 lua 编写 Computercraft minecraft 乌龟进行坐标农场操作

我有一个 7x7 的方形田地。我试图尽可能减少移动,以减少燃料消耗。

我发现这是最容易的路径

就像一个图形一样,我正在尝试为某些点分配坐标。我可以使用中间的蓝色物体(水)作为原点,但是使用最左下角的方块种子作为原点似乎也可以。

这是我目前的成果:

我遇到的问题是当它要更换行时。最简单的方法是返回到 x 最小值,这会消耗大量燃料和时间。有没有办法让乌龟机器人知道下一行要去哪个方向?

点赞
用户3304238
用户3304238

下面的代码以您期望的方式遍历一个场地。虽然简单,但它可以从一些抽象中受益,以使其可用于其他目的。

local rowSize = 7
local colSize = 7
local turnLeft = true
local skipMove = false

function goHome()
   local r,c
   turtle.turnLeft()
   turtle.turnLeft()
   for c=1,colSize-1 do
      turtle.forward()
   end
   turtle.turnLeft()
   for r=1,rowSize-1 do
      turtle.forward()
   end
   turtle.turnLeft()
   turtle.back()

function harvestRow()
   local c
   for c=1,colSize do
      if skipMove == true then
         skipMove = false
      else
         turtle.forward()
      end

      turtle.digDown()
   end
end

--
-- 移动并将海龟导向下一行
--
function nextRow()
   if turnLeft == true then
      turtle.turnLeft()
      turtle.forward()
      turtle.turnLeft()
      turnLeft = false
   else
      turtle.turnRight()
      turtle.forward()
      turtle.turnRight()
      turnLeft = true
   end
   skipMove = true
end

--
-- 开始耕作
--
function harvestField()
   local r
   for r=1,rowSize do
      harvestRow()

      -- 除非是最后一行,否则转到下一行
      if r~=colSize then
         nextRow()
      end
   end
   goHome()
end

祝您的耕作事业一切顺利,感谢机会让我再次使用海龟 API 知识。

2017-01-30 20:55:10
用户8076197
用户8076197

如果网格大小总是7x7(或任何奇数宽度),您可以在另一侧为海龟建立一个家。这样,它就不会浪费燃料来回旅行。

对于所有大小,您还可以根据行的奇偶性(偶数或奇数)来转向。如果它总是从右下角开始,它将在第一个后面向左转,第二个后面向右转,依此类推:

rowCnt = 1;
如果 rowCnt%2 == 0 then --偶数行数
  turtle.turnRight()
else --奇数行数
  turtle.turnLeft()
end
2017-05-28 16:22:30