タートルのスロット変更が上手くいかなかったので、範囲は無限にはできませんでした。
最大範囲は縦が256(4の倍数)
横が無限?(2の倍数)となっています。
当然ブロックが足りなくなりますが、採掘用のタートルに丸石を掘ってもらうことを想定しています。今回のタートルの動きをは、露天掘りプログラムにも応用できます。
64x54の床貼りプログラム、最大256まで対応
ラージチェストをブロックで埋め尽くしたら上図のようになります
今回のプログラムの考え方
設置するだけのブロックをチェストから補充
設置のループで使用するタートルのスロットを変更
スタート位置に戻るための「local COUNT=」の定義
256x256のサイズの丸石の設置です
タートルの横にラージチェストを2か所配置
タートルのインベントリは空の状態です
タートルの隣は木炭
もう一つを丸石で埋め尽くします
まずは燃料補給と丸石を補給
タートルは縦方向にブロックを設置しながら進み、折り返してブロックを設置しながら戻ってきます
横に2ブロック分設置するごとに燃料とブロックの補給を行います
丸石の補充をしていないので3456ブロックで止まりました
256x256=65536の丸石が必要となります
採掘タートルに丸石を補充させる予定です
--####コンフィグ####
local VERTICAL=64--縦のサイズ、デフォルト64、最大256、4の倍数
local SIDE=54--横のサイズ、デフォルト54、最大54、2の倍数
local COUNT=0--横に進んだブロック数
--####関数FORWARDPLACE####
function FORWARDPLACE()--関数FORWARDPLACEの定義
--奇数列を進みながらブロックを設置
for A=1,4 do--ループAは、ループBを4回まで実行
turtle.select(A)--スロットは、ループAを選択
for B=1,VERTICAL/4 do--ループBは、1~縦のサイズの4分の1まで実行
turtle.placeDown()--下にブロックを設置
turtle.forward()--前に行く
end--ループBの終わり
end--ループAの終わり
--列を移動する
turtle.turnRight()--右を向く
if turtle.forward() then--もしも前に行くのに成功したら
COUNT=COUNT+2--COUNTに+2
end--もしもの終わり
turtle.turnRight()--右を向く
--偶数列を戻りながらブロックを設置
for C=1,4 do--ループCは、ループDを4回まで実行
turtle.select(C+4)--スロットは、ループC+4を選択
for D=1,VERTICAL/4 do--ループDは、1~縦のサイズ4分の1まで実行
turtle.forward()--前に行く
turtle.placeDown()--下にブロックを設置
end--ループDの終わり
end--ループCの終わり
return COUNT--戻り値COUNTの+2を反映
end--関数のFORWARDPLACEの終わり
--####メインの処理####
--タートルが動き出すための燃料の補給
turtle.turnLeft()--左を向く
turtle.select(9)--スロット9を選択
turtle.suck(1)--燃料をチェストから1補給
turtle.refuel()--タートルに燃料を補給
turtle.up()--上に行く
--チェストから燃料とブロックを補給
for E=1,SIDE/2 do--ループEは、1~SIDEの2分の1まで実行
--チェストから燃料を補給
turtle.select(9)--スロット9を選択
turtle.forward()--前に行く
turtle.suckDown(10)--チェストから燃料を10補給
turtle.refuel()--タートルに燃料を補給
turtle.forward()--前に行く
turtle.forward()--前に行く
--チェストからスロット8までブロックを補給
for F=1,8 do--ループFは、1~8回まで実行
turtle.select(F)--スロットは、ループFを選択
turtle.suckDown(VERTICAL/4)--チェストからVERTICALの4分の1を補給
end--ループFの終わり
--スタート位置に戻る
turtle.turnRight()--右を向く
turtle.turnRight()--右を向く
turtle.forward()--前に行く
turtle.forward()--前に行く
turtle.forward()--前に行く
--次のブロック設置場所まで進む
for G=1,COUNT do--ループGは、1~COUNTまで実行
turtle.forward()--前に行く
end--ループGの終わり
turtle.turnLeft()--左を向く
FORWARDPLACE()--関数FORWARDPLACEの実行
turtle.turnRight()--右を向く
--スタート位置まで戻る
for E=1,COUNT-1 do--ループCは、1~COUNT-1まで実行
turtle.forward()--前に行く
end--ループEの終わり
end--ループCの終わり
turtle.turnRight()--右を向く
プログラムの内容(縦12で説明です)
タートルのスタート位置は、1
燃料の補給
メインのループの開始
燃料のチェストで燃料の補給(タートルスロット9)
ブロックのチェストでブロックを補給
スロット1から8まで(local VERTICAL=の4分の1の数)
タートルのスタート位置の、1に戻る
ブロックの設置に移動(2回目以降)
行きのブロックの設置
1・2・3のブロックの設置(スロット1)
4・5・6のブロックの設置(スロット2)
7・8・9のブロックの設置(スロット3)
10・11.・12のブロックの設置(スロット4)
2番目の列に13の位置に移動(COUNT+2)
戻りのブロックの設置
13・14・15のブロックの設置(スロット5)
16・17・18のブロックの設置(スロット6)
19・20・21のブロックの設置(スロット7)
22・23・24のブロックの設置(スロット8)
タートルのスタート位置の、1に戻る
ループの終わり
右を向く
1段目の4スロットを行きのブロック設置に使用します
2段目の4スロットを戻りのブロック設置に使用します
スロット9以降を燃料で使いますがスロットに残らないようにします
(木炭、石炭1個で80ブロック進めます、またタートル内に燃料は蓄積されます)
プログラムのルール
- ブロックのスロットは8までを使用します
- スロット9~16は、念のために燃料で使用します
- タートルの燃料が満タンで不具合が起こる可能性がります
- 溶岩バケツはバケツが残るので使用できません
- 範囲設定は縦(最大256で4の倍数)横(2の倍数で無限)
- 任意の設定文字は大文字で設定しています
おまけ
ローマ字が世界最強の英語だと思っているんですが、とりあえず調べました。
英語のサイズ関係の表記
- 大きさ=Size
- 縦(奥行)=Depth
- 横(幅)=Width
- 横(幅)=Breadth
- 高さ=Height
- 深さ=Depth
- 長さ=Length
- 垂直(直立)=Vertcal
- 側面=Side
- 体積=Volume
- 直径=Diameter
- 円周=使うことがない
縦(奥行)と深さが同じ「Depth」・・・
これからはこれで統一します
縦(奥行)=Length
横(幅)=Width
高さ=Height
深さ=Depth
関連サイト
0 件のコメント:
コメントを投稿