使用lua在Computercraft我的世界中使用坐标对乌龟进行编程

时间:2017-01-28 10:11:19

标签: lua coordinates minecraft computercraft

我有一个方形的7x7方场。我试图减少运动,以减少燃料消耗。

I find this path the easiest path

像图表一样,我正在尝试为某些点分配坐标。我可以使用中间的蓝色东西(水)作为原点,但似乎使用最左下方的块种子,因为原点也有效。

这是我到目前为止所做的:

我遇到的问题是它何时会改变行。最简单的方法是回到x最小值,这会耗费大量的燃料和时间。有没有办法让龟机器人知道要改变到下一行的方向?

2 个答案:

答案 0 :(得分:2)

以下代码以您希望的方式遍历字段。虽然简单但有效,但可以从一些抽象中受益,使其可用于其他目的。

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

--
-- Move and orient turtle onto next row
--
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

--
-- Call to start farming
--
function harvestField()
   local r
   for r=1,rowSize do
      harvestRow()

      -- go to next row unless its the last
      if r~=colSize then
         nextRow()
      end
   end
   goHome()
end

对您的农业努力表示最良好的祝愿,并感谢您有机会了解一些旧的Turtle API知识。

答案 1 :(得分:1)

如果它总是7x7(或任何奇数宽度),你可以在另一边为海龟建造一个家。这样,它不会浪费燃料必须返回。

对于所有尺寸,您也可以根据行的奇偶校验(偶数或奇数)进行转动。如果它总是从右下角开始,它将在第一个之后,在第二个之后,左转,依此类推:

rowCnt = 1;
if rowCnt%2 == 0 then --even row number
  turtle.turnRight()
else --odd row number
  turtle.turnLeft()
end