マイニング タートル用に次のスクリプトを作成しました。
--Strip mining turtle program test
--Based on stripmining program by Gabriel *******(Spirr0u)
function excarvateRectangle(size,looptimes)
print("Excavating "..size .. " with looptimes "..looptimes)
if size > 0 then
for i=1, looptimes, 1 do
for z=1, size, 1 do
turtle.dig()
sleep(1)
turtle.forward()
end
turtle.turnRight()
end
onesmaller = size-1
excarvateRectangle(onesmaller,2)
end
end
function goBackToStart(size2)
print("Going back to "..size2)
-- go back like a stair with size as the number of turns
if size2 % 2 == 0 then
turnAround()
end
dir=0
for z=1, size2, 1 do
turtle.forward()
if dir == 0 then
turtle.turnLeft()
dir = 1
else
turtle.turnRight()
dir = 0
end
end
-- turn in the right direction
if size2 % 2 > 0 then
turtle.turnRight()
end
turtle.turnRight()
end
function digHole(origsize, depth)
for g=1, depth, 1 do
size = origsize
excarvateRectangle(size,3)
sleep(3)
goBackToStart(origsize)
turtle.digDown()
turtle.down()
end
for g=1, depth, 1 do
turtle.up()
end
end
function checkFuel()
while turtle.getFuelLevel() <= 50 do
turtle.select(15)
turtle.refuel(1)
turtle.select(1)
end
end
function turnAround()
turtle.turnRight()
turtle.turnRight()
end
-- MAIN
print("Fuel in slot 15")
print("Input rectangle size:")
origsize = io.read()
origsize = origsize +0
print("Input depth:")
depth = io.read()
depth = depth +0
checkFuel()
digHole(origsize, depth)
print("Finish")
テスト用に、サイズを 5、深さを 2 にしました。2ブロックの深さで5x5ブロックを掘削する必要があります。
何が起こるか: 亀はらせん状に長方形の領域を掘ります。次に、らせんの中心から開始位置に戻ります。今度は 1 つ下がって、'depth' 回だけ再開します。
しかし、2回目に元の位置に戻ると、奇妙な動作を示します。ジグザグに進むのではなく、左に左に進み、左に左に進み、何とか方向転換して終了します。
私はすでにそれがスコープであると想定し、変数の名前を変更しました。変数のデバッグ出力を追加しました。すべてが正しいようです。私はそれがそこで起こっていることを見つけることができません。競合状態である可能性があると思います。
どんな助けでも大歓迎です。
ありがとう、ボリス