2019年7月25日木曜日

チェスト自動設置プログラム

プログラムを発展させるには、複数のタートルの連携が必要となります。その中で不可欠なのが、チェストの大量設置です。そこでコンフィグにて縦横の可変、チェストの段数も設定できるプログラムを考えました。特徴として、タートルのスロットが空になると次のスロットへと移る関数を定義してチェスト設置しています。

--###アイテムがなくなるとスロットを変更する関数

function PLACESLOT()--関数の定義
    if turtle.placeDown() then--もしブロックが置けたら処理続行
    else--もしブロックが置けなかったら
        local SLOT=turtle.getSelectedSlot()--選択スロットをSLOTで定義
        for A=SLOT,16 do--スロット変更のループ 
            turtle.select(A)--スロットはループAを選択
            if turtle.getItemCount()>0 then--アイテム個数が0より大きければ
                turtle.placeDown()--ブロックを設置
            break--ループAを終える
            end--もしアイテム個数が...の終わり
        end--スロット変更ループの終わり
    end--もしブロックが置けたらの終わり
end--関数定義の終わり

いろいろと役に立つと思います


16x8x3段のラージチェスト設置のプログラム、最後は元に戻ってきます
可変式の反復するプログラムでは、スタート位置に戻ってくることが必須となります

local COUNT=0--横のチェストに数をカウントする変数の定義
local COMEBACK=0--横に移動した数をカウントする変数の定義


スロット1には木炭などの燃料を入れておきます

※燃料を考えるとプログラムが難しくなりますので、初心者は最初にタートルの燃料を大量に入れておくか、コンフィグで燃料不要にすることをお勧めします



縦方向に移動しながら設置して、戻りながら設置ののプログラムです


縦横、段数を指定できます、最大チェスト1024個まで設置可能です

local LENGTH=16--縦方向のチェストの数の定義
local WIDTH=8--横方向のチェストの数の定義
local STEP=3--チェストの段数の定義




--####可変式チェスト大量設置のプログラム
local LENGTH=16
local WIDTH=8
local STEP=3
function PLACESLOT()
    if turtle.placeDown() then
    else
        local SLOT=turtle.getSelectedSlot()
        for A=SLOT,16 do 
            turtle.select(A)
            if turtle.getItemCount()>0 then
                turtle.placeDown()
            break
            end
        end
    end
end
turtle.select(1)
turtle.refuel()
for A=1,STEP do
    local COUNT=0
    local COMEBACK=0
    turtle.up()
    for A=1,WIDTH do
        COUNT=COUNT+1
        for A=1,LENGTH-1 do
            PLACESLOT()
            turtle.forward()
            turtle.forward()
            PLACESLOT()
        end
        turtle.turnRight()
        turtle.forward()
        COMEBACK=COMEBACK+1
        turtle.turnRight()
        for A=1,LENGTH-1 do
            PLACESLOT()
            turtle.forward()
            turtle.forward()
            PLACESLOT()
        end
        if WIDTH==COUNT then
            turtle.turnRight()
            for A=1,COMEBACK do
                turtle.forward()
            end
            break
        else
            turtle.turnLeft()
            turtle.forward()
            turtle.forward()
            turtle.turnLeft()
            COMEBACK=COMEBACK+2
        end
    end
    turtle.turnRight()
end
--####可変式チェスト大量設置のプログラムの終わり


このプログラムを考えたのは、大量のタートルに自動植林のプログラムで走らせたのですが、チェストは壊す、1段上で止まる、下まで掘りぬく、前後がズレるなどと問題だらけでした。そのたびにチェストに植林素材を入れたりと面倒なことを繰り返していました。ならば、その面倒なことは、タートルが自動でするのが目的です。


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

0 件のコメント:

コメントを投稿