使用lua在Computercraft minecraft中编程海龟使用坐标进行养殖

使用lua在Computercraft minecraft中编程海龟使用坐标进行养殖,lua,coordinates,minecraft,computercraft,Lua,Coordinates,Minecraft,Computercraft,我有一个7x7正方形的场地。我正在尽量减少运动量,以减少油耗 就像一个图形,我试图给某些点分配坐标。我可以用蓝色的东西在中间(水)作为原点,但是似乎使用最底部的左块种子作为原点也起作用。 这就是我到目前为止所做的: 我遇到的问题是,它将在何时更改行。最简单的方法是回到x最小值,这会消耗大量的燃料和时间。海龟机器人有没有办法知道换到下一行的方向?下面的代码以您希望的方式遍历字段。虽然很简单,但它可以工作,但可以从一些抽象中获益,使其可用于其他目的 local rowSize = 7 local

我有一个7x7正方形的场地。我正在尽量减少运动量,以减少油耗

就像一个图形,我试图给某些点分配坐标。我可以用蓝色的东西在中间(水)作为原点,但是似乎使用最底部的左块种子作为原点也起作用。 这就是我到目前为止所做的:


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

下面的代码以您希望的方式遍历字段。虽然很简单,但它可以工作,但可以从一些抽象中获益,使其可用于其他目的

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

衷心祝愿您的耕作工作顺利,并感谢您给我们这个机会,让我们来学习一些关于海龟API的知识。

下面的代码以您希望的方式遍历一个领域。虽然很简单,但它可以工作,但可以从一些抽象中获益,使其可用于其他目的

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
衷心祝愿您的农耕事业,并感谢您给我们这个机会,让我们拭目以待一些古老的海龟API知识。

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

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

rowCnt = 1;
if rowCnt%2 == 0 then --even row number
  turtle.turnRight()
else --odd row number
  turtle.turnLeft()
end
如果它总是7x7(或任何奇数宽度),你可以在另一边为海龟建造一个家。这样,它就不会浪费燃料不得不返回

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

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

你说的“我希望看看我是否能用坐标来引导我的乌龟去哪里”是什么意思?因为最后你会问“我遇到的问题是它什么时候会换行。”这难道不是和其他人一样最简单的方法吗?听乌龟下面的红石信号,哪一个激活了你的脚本,然后通过每个字段并收获它?顺便说一句,有一个叫做海龟脚本的海龟IDE。谢谢!我修正了这个小错误。出于好奇,有没有一种方法可以完全做到这一点,只需对海龟进行编程,而不必感知红石信号?我想你可以使用海龟的内部计时器和/或wifi海龟你说的“我希望看看我是否可以用坐标引导海龟去哪里”是什么意思?因为最后你会问“我遇到的问题是它什么时候要换行。”这难道不是像其他人一样最简单的方法吗?听海龟下面的红石信号,激活你的脚本,然后穿过每一块地,收获它?顺便说一句,有一个“IDE”“为了叫海龟的海龟,谢谢你!我修正了这个小错误。出于好奇,有没有一种方法可以完全做到这一点,只需对海龟进行编程,而不用感知红石信号?我想你可以使用海龟的内部定时器和/或wifi海龟谢谢!有一个小错误,但除此之外,它工作得非常好。左右交替的效果很好,我的其他海龟项目也给了我灵感。@m_cht很高兴你发现它很有用。小错误是什么?我把副本复制到答案中时弄糟了吗?在函数harvestRow()中,您使用了“skipMove==false”,而不是将其作为变量。只是一个小小的错误。再次感谢。@m_cht Thx的反馈。我更正了答案中的代码,以防其他人复制它供自己使用。非常感谢!有一个小错误,但除此之外,它工作得非常好。左右交替的效果很好,我的其他海龟项目也给了我灵感。@m_cht很高兴你发现它很有用。小错误是什么?我把副本复制到答案中时弄糟了吗?在函数harvestRow()中,您使用了“skipMove==false”,而不是将其作为变量。只是一个小小的错误。再次感谢。@m_cht Thx的反馈。我更正了答案中的代码,以防其他人复制它供自己使用。这一建议并非不合理;但是,更复杂的海龟设置可能具有自动装载燃油和其他物品的机制。如果没有一个清晰的家,就需要重复支撑海龟的街区;但是,更复杂的海龟设置可能具有自动装载燃油和其他物品的机制。如果没有一个明确的家,就需要重复支撑海龟的砖块。