2020年1月25日土曜日

列の移動のループを作成して一面を掘りぬく

露天掘りの一段目を掘りぬく一番簡単なプログラムを完成させます。今回のプログラムは、一面にブロックを設置する、自動農業などで使えるなど、タートルの基本となる動作なので理解できれば、様々な形に発展させていくことができるようになります。


タートルのAPIはこちらで確認できます

前回作成した右回りと左回りを加えたプログラム

--前回のプログラム
turtle.digDown()--下を掘る
turtle.down()--下に行く
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
end--ループTATEの終わり
turtle.turnRight()--9の方向を向く
turtle.dig()--9のブロックを壊す
turtle.forward()--9に行く
turtle.turnRight()--10の方向を向く
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
end--ループTATEの終わり
turtle.turnLeft()--17の方向を向く
turtle.dig()--17のブロックを壊す
turtle.forward()--17に行く
turtle.turnLeft()--18の方向を向く
--前回のプログラムの終わり


前回のプログラムは、2列+1を掘り「17」の位置でタートルは止まります


列の移動を考えてループカウンターで3回繰り返す

「AB」列、「CD」列、「EF」列を破壊して進み「48」の位置で左を向いて「49」のブロックを壊し「49」に進み、左を向き「50」を向きます。

「一列を掘り進み、右回りに列を移動、一列を掘り戻り、左回りに列を移動」この4個の動作をループカウンター「YOKO」で3回繰り返します。

--1.のプログラム
turtle.digDown()--下を掘る
turtle.down()--下に行く
for YOKO=1,3 do--2列を破壊して進むループを3回繰り返すループYOKO 
    for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
        turtle.dig()--前を壊す
        turtle.forward()--前に行く
    end--ループTATEの終わり
    turtle.turnRight()--右を向く
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
    turtle.turnRight()--右を向く
    for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
        turtle.dig()--前を壊す
        turtle.forward()--前に行く
    end--ループTATEの終わり
    turtle.turnLeft()--左を向く
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
    turtle.turnLeft()--左を向く
end--ループYOKOの終わり
--1.のプログラムの終わり


タートルは残りの「GH」列を残して「49」の位置で停止


※プログラムのポイント
ループ「YOKO」は、「1列を掘る、右回りに列を移動、1列を掘る、左回りに列を移動」を3回繰り返します。4回にしてしまうと必要のない「65」のブロックまで破壊してしまいます。4回目の処理に最後の部分の「左を向く、前を破壊、前に行く、左を向く」が必要ありませんので3回のループとしています。



7列目と8列目を掘り進みます
「50」から「56」までを破壊して進み、「57」を破壊して進み、「58~64」まで破壊して進んで「8x8の64」ブロックの一段目を掘りぬきます。


--2.のプログラム
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
end--ループTATEの終わり
turtle.turnRight()--57の方向を向く
turtle.dig()--57のブロックを壊す
turtle.forward()--57に行く
turtle.turnRight()--58の方向を向く
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
end--ループTATEの終わり
--2.のプログラムの終わり

※プログラムのポイント
最後の二列を破壊して進んだ後、64の位置で処理を終えることが重要です。


1と2のプログラムを組み合わせてプログラムを完成させます

--今回のプログラム
--1.のプログラム
turtle.digDown()--下を掘る
turtle.down()--下に行く
for YOKO=1,3 do--2列を破壊して進むループを3回繰り返すループYOKO 
    for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
        turtle.dig()--前を壊す
        turtle.forward()--前に行く
    end--ループTATEの終わり
    turtle.turnRight()--右を向く
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
    turtle.turnRight()--右を向く
    for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
        turtle.dig()--前を壊す
        turtle.forward()--前に行く
    end--ループTATEの終わり
    turtle.turnLeft()--左を向く
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
    turtle.turnLeft()--左を向く
end--ループYOKOの終わり
--1.のプログラムの終わり
--2.のプログラム
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
end--ループTATEの終わり
turtle.turnRight()--57の方向を向く
turtle.dig()--57のブロックを壊す
turtle.forward()--57に行く
turtle.turnRight()--58の方向を向く
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
    turtle.dig()--前を壊す
    turtle.forward()--前に行く
end--ループTATEの終わり
--2.のプログラムの終わり
--今回のプログラム


プログラムの構成は、三つから成り立っています


次のページ「スタート地点に戻りチェストにアイテムを入れる」
前のページ「右回り左回りに列を移動する」

0 件のコメント:

コメントを投稿