使用lua在Computercraft minecraft中编程海龟使用坐标进行养殖
我有一个7x7正方形的场地。我正在尽量减少运动量,以减少油耗 就像一个图形,我试图给某些点分配坐标。我可以用蓝色的东西在中间(水)作为原点,但是似乎使用最底部的左块种子作为原点也起作用。 这就是我到目前为止所做的:使用lua在Computercraft minecraft中编程海龟使用坐标进行养殖,lua,coordinates,minecraft,computercraft,Lua,Coordinates,Minecraft,Computercraft,我有一个7x7正方形的场地。我正在尽量减少运动量,以减少油耗 就像一个图形,我试图给某些点分配坐标。我可以用蓝色的东西在中间(水)作为原点,但是似乎使用最底部的左块种子作为原点也起作用。 这就是我到目前为止所做的: 我遇到的问题是,它将在何时更改行。最简单的方法是回到x最小值,这会消耗大量的燃料和时间。海龟机器人有没有办法知道换到下一行的方向?下面的代码以您希望的方式遍历字段。虽然很简单,但它可以工作,但可以从一些抽象中获益,使其可用于其他目的 local rowSize = 7 local
我遇到的问题是,它将在何时更改行。最简单的方法是回到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的反馈。我更正了答案中的代码,以防其他人复制它供自己使用。这一建议并非不合理;但是,更复杂的海龟设置可能具有自动装载燃油和其他物品的机制。如果没有一个清晰的家,就需要重复支撑海龟的街区;但是,更复杂的海龟设置可能具有自动装载燃油和其他物品的机制。如果没有一个明确的家,就需要重复支撑海龟的砖块。