2019年8月10日土曜日

プログラム2

このプログラムはラージチェストを32個設置して原木を入手したら設置したチェストにドロップするプログラムです。チェストに何が入ってもエラーを起こすことがないので簡単なものになっています。自動植林場まで原木を回収に行かせることも考えましたが、アイテムを分配するタートルとの位置関係が難しくなるので断念しました。


1.のプログラムで設置されたタートル(青く染色しています)


1.のプログラムであらかじめ木炭とチェストが入っています


プログラムをスタート

この部分のチェストを設置


この位置で原木を入手できるまで待機します

無限ループの開始

燃料レベルが300以下になると燃料を補給

if turtle.getFuelLevel()<300 then
        turtle.select(1)
        turtle.suckDown()
        turtle.refuel()
    end

60秒ごとにチェストから入手できるかループします

このチェストには原木以外は入らない設定なので、アイテム名を指定していません。また違うアイテムが入り込んでもエラーになることはありません。

 
    while true do
        if turtle.suckDown() then
        break
        else
            print("Log_Supply:OsSleep",Sleep,"ms")
            os.sleep(Sleep)
        end
    end


原木を入手出来たら移動しながらチェストにドロップしていきます

        for A=1,16 do
            turtle.select(A)
            turtle.dropDown()
        end




複数タートルでの自動植林 プログラム2
2.のプログラムはここから
--####原木輸送プログラム
local Sleep=60
--####チェスト設置の関数
function PlaceDownChest()
    turtle.placeDown()
    turtle.forward()
    turtle.forward()
    turtle.placeDown()
end
--####燃料補給
turtle.select(1)
turtle.refuel()
--####チェスト設置
turtle.up()
turtle.select(2)
turtle.forward()
turtle.turnLeft()
turtle.forward()
for A=1,7 do
    for A=1,3 do
        PlaceDownChest()
    end
    turtle.turnLeft()
    turtle.forward()
    turtle.turnLeft()
    for A=1,3 do
        PlaceDownChest()
    end
    turtle.turnRight()
    turtle.forward()
    turtle.forward()
    turtle.turnRight()
end
for A=1,3 do
    PlaceDownChest()
end
    turtle.turnLeft()
    turtle.forward()
    turtle.turnLeft()
for A=1,3 do
    PlaceDownChest()
end
turtle.turnLeft()
for A=1,21 do
    turtle.forward()
end
--####原木倉庫タートルの無限ループ
while true do
    turtle.turnRight()
--####燃料補給
    for A=1,8 do
        turtle.forward()
    end
    if turtle.getFuelLevel()<300 then
        turtle.select(1)
        turtle.suckDown()
        turtle.refuel()
    end
--####原木回収 
    turtle.turnRight()
    turtle.turnRight()
    for A=1,6 do
        turtle.forward()
    end
    turtle.select(1)
    while true do
        if turtle.suckDown() then
        break
        else
            print("Log_Supply:OsSleep",Sleep,"ms")
            os.sleep(Sleep)
        end
    end 
    for A=2,16 do
        turtle.select(A)
        turtle.suckDown()
    end
    turtle.forward()
    turtle.forward()
--####チェストへのドロップ関数
    function DropDownForward()
        for A=1,16 do
            turtle.select(A)
            turtle.dropDown()
        end
        turtle.forward()
        turtle.forward()
        for A=1,16 do
            turtle.select(A)
            turtle.dropDown()
        end
    end
--####原木を倉庫へ移動
    for A=1,3 do
        for A=1,3 do
            DropDownForward()
        end
        turtle.turnLeft()
        turtle.forward()
        turtle.forward()
        turtle.forward()
        turtle.turnLeft()
        for A=1,3 do
            DropDownForward()
        end
        turtle.turnRight()
        turtle.forward()
        turtle.forward()
        turtle.forward()
        turtle.turnRight()
    end
    for A=1,3 do
        DropDownForward()
    end
    turtle.turnLeft()
    turtle.forward()
    turtle.forward()
    turtle.forward()
    turtle.turnLeft()
    for A=1,3 do
        DropDownForward()
    end
    turtle.turnLeft()
    for A=1,21 do
        turtle.forward()
    end
end
2.のプログラムはここまで

次のプログラムです
複数タートルでの自動植林 プログラム3

関連サイト
コンピュータークラフトを極める その2

0 件のコメント:

コメントを投稿