使用 lua 在 Computercraft minecraft 中对乌龟进行编程以使用坐标进行耕种
Using lua to program a turtle in Computercraft minecraft to farm using coordinates
我有一个 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 知识。
如果它总是 7x7(或任何奇数宽度),您可以在另一边为海龟建造一个家。这样,就不会浪费燃料而不得不返回。
对于所有大小,您还可以根据行的奇偶校验(偶数或奇数)进行转换。如果总是从右下角开始,第一个左转,第二个右转,以此类推:
rowCnt = 1;
if rowCnt%2 == 0 then --even row number
turtle.turnRight()
else --odd row number
turtle.turnLeft()
end
我有一个 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 知识。
如果它总是 7x7(或任何奇数宽度),您可以在另一边为海龟建造一个家。这样,就不会浪费燃料而不得不返回。
对于所有大小,您还可以根据行的奇偶校验(偶数或奇数)进行转换。如果总是从右下角开始,第一个左转,第二个右转,以此类推:
rowCnt = 1;
if rowCnt%2 == 0 then --even row number
turtle.turnRight()
else --odd row number
turtle.turnLeft()
end