プログラムに縦方向と横方向の動きをカウントさせて、燃料が規定値を下回るとチェストに行って燃料を補給して元居た場所に戻っていきます。タートルの位置の把握することが重要となります。
範囲は8x8で設定しています
※自動農業でのタートルの動きを想定したプログラムです、実際に植え付けや収穫は行いません、燃料が規定値を下回ったら補給するだけです
タートルのインベントリは空にします
タートルの燃料レベルは、0です
前のチェストに木炭1スタック用意します
プログラムのタートルの動き
タートルはチェストから木炭を1入手して燃料を補給します
燃料レベルは80となります
タートルの動き
前に7ブロック進み、列を移動して、7ブロック戻るを3回繰り返します
前に7ブロック進み、列を移動して、7ブロック戻り、スタート地点に戻ります
どの位置にいても燃料レベルが40を下回るとチェストに戻って燃料を1補給します
燃料が40を下回った地点まで戻り移動を開始します
タートルの燃料値の下限
if turtle.getFuelLevel()<40 then
列の移動の変数を無限ループ1回毎にリセット
local Line=0
列の移動をしたときに+1を加えます
Line=Line+1
前に進む変数をループ毎にリセット
local Forward=0
1ブロック前に進んだときに+1を加えます
Forward=Forward+1
戻ってくる変数をループ毎にリセット
local Uturn=7
1ブロック戻ってときに-1を引きます
Uturn=Uturn-1
--####燃料低でチェストに戻り元の場所に戻るプログラム
turtle.select(1)
turtle.suck(1)
turtle.refuel(1)
turtle.up()
turtle.forward()
turtle.forward()
while true do
local Line=0
for A=1,3 do
local Forward=0
for A=1,7 do
local FuelLevel=turtle.getFuelLevel()
print("FuelLevel:",FuelLevel)
if turtle.getFuelLevel()<40 then
turtle.turnLeft()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
for A=1,Forward do
turtle.forward()
end
turtle.forward()
turtle.select(1)
turtle.suckDown(1)
turtle.refuel(1)
turtle.turnRight()
turtle.turnRight()
turtle.forward()
for A=1,Forward do
turtle.forward()
end
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
end
turtle.forward()
Forward=Forward+1
print("Forward:",Forward)
end
turtle.turnRight()
turtle.forward()
Line=Line+1
print("Line:",Line)
turtle.turnRight()
local Uturn=7
for A=1,7 do
local FuelLevel=turtle.getFuelLevel()
print("FuelLevel:",FuelLevel)
if turtle.getFuelLevel()<40 then
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
for A=1,Uturn do
turtle.forward()
end
turtle.forward()
turtle.select(1)
turtle.suckDown(1)
turtle.refuel(1)
turtle.turnRight()
turtle.turnRight()
turtle.forward()
for A=1,Uturn do
turtle.forward()
end
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnRight()
end
turtle.forward()
Uturn=Uturn-1
print("Uturn:",Uturn)
end
turtle.turnLeft()
turtle.forward()
Line=Line+1
turtle.turnLeft()
end
local Forward=0
for A=1,7 do
local FuelLevel=turtle.getFuelLevel()
print("FuelLevel:",FuelLevel)
if turtle.getFuelLevel()<40 then
turtle.turnLeft()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
for A=1,Forward do
turtle.forward()
end
turtle.forward()
turtle.select(1)
turtle.suckDown(1)
turtle.refuel(1)
turtle.turnRight()
turtle.turnRight()
turtle.forward()
for A=1,Forward do
turtle.forward()
end
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
end
turtle.forward()
Forward=Forward+1
print("Forward:",Forward)
end
turtle.turnRight()
turtle.forward()
Line=Line+1
print("Line:",Line)
turtle.turnRight()
local Uturn=7
for A=1,7 do
local FuelLevel=turtle.getFuelLevel()
print("FuelLevel:",FuelLevel)
if turtle.getFuelLevel()<40 then
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
for A=1,Uturn do
turtle.forward()
end
turtle.forward()
turtle.select(1)
turtle.suckDown(1)
turtle.refuel(1)
turtle.turnRight()
turtle.turnRight()
turtle.forward()
for A=1,Uturn do
turtle.forward()
end
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnRight()
end
turtle.forward()
Uturn=Uturn-1
print("Uturn:",Uturn)
end
turtle.turnRight()
for A=1,7 do
turtle.forward()
end
turtle.turnRight()
end
--####燃料低でチェストに戻り元の場所に戻るプログラムの終わり
プログラムには print() を使用して燃料値、移動カウントをタートル画面に表示するようにしていますが、省略すればより短くなります。また新たにチェストでのタートルの動きを function MoveChesu() と関数とすればさらに短くなります。ただし燃料値が低くなりチェストに戻る動作を関数化すると変数を反映させることが難しくなります。
新たに関数処理を加えるとメイン処理とのつながりで、タートルの位置ずれが起こることが判明しました。turtle.forward() だけのような早い処理の場合は、os.sleep(秒) などを関数の最後に入れることで解消されるようです。
--####短くしたプログラム
--####燃料低でチェストに戻り元の場所に戻るプログラム
turtle.select(1)
turtle.suck(1)
turtle.refuel(1)
turtle.up()
turtle.forward()
turtle.forward()
function MoveChest()
turtle.forward()
turtle.select(1)
turtle.suckDown(1)
turtle.refuel(1)
turtle.turnRight()
turtle.turnRight()
turtle.forward()
end
while true do
local Line=0
for A=1,3 do
local Forward=0
for A=1,7 do
if turtle.getFuelLevel()<40 then
turtle.turnLeft()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
for A=1,Forward do
turtle.forward()
end
MoveChest()
for A=1,Forward do
turtle.forward()
end
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
end
turtle.forward()
Forward=Forward+1
end
turtle.turnRight()
turtle.forward()
Line=Line+1
turtle.turnRight()
local Uturn=7
for A=1,7 do
if turtle.getFuelLevel()<40 then
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
for A=1,Uturn do
turtle.forward()
end
MoveChest()
for A=1,Uturn do
turtle.forward()
end
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnRight()
end
turtle.forward()
Uturn=Uturn-1
end
turtle.turnLeft()
turtle.forward()
Line=Line+1
turtle.turnLeft()
end
local Forward=0
for A=1,7 do
if turtle.getFuelLevel()<40 then
turtle.turnLeft()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
for A=1,Forward do
turtle.forward()
end
MoveChest()
for A=1,Forward do
turtle.forward()
end
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
end
turtle.forward()
Forward=Forward+1
end
turtle.turnRight()
turtle.forward()
Line=Line+1
turtle.turnRight()
local Uturn=7
for A=1,7 do
if turtle.getFuelLevel()<40 then
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnLeft()
for A=1,Uturn do
turtle.forward()
end
MoveChest()
for A=1,Uturn do
turtle.forward()
end
turtle.turnRight()
for A=1,Line do
turtle.forward()
end
turtle.turnRight()
end
turtle.forward()
Uturn=Uturn-1
end
turtle.turnRight()
for A=1,7 do
turtle.forward()
end
turtle.turnRight()
end
--####燃料低でチェストに戻り元の場所に戻るプログラムの終わり
関連サイト
コンピュータークラフトを極める その3
1.16.5日本語化リソースパック配布
302個のMODの翻訳が完了したので YouTube にて配布いたします 。翻訳の内容など不備はありますが、無いよりはましだと思って使ってください。翻訳したMODの詳細については、まとめるのが面倒くさいので止めておきます。このリソースパックを導入することがマイクラMOD攻略の近道...
関連コンテンツ
-
302個のMODの翻訳が完了したので YouTube にて配布いたします 。翻訳の内容など不備はありますが、無いよりはましだと思って使ってください。翻訳したMODの詳細については、まとめるのが面倒くさいので止めておきます。このリソースパックを導入することがマイクラMOD攻略の近道...
-
Vampirism 1.7.10 / 1.12.2 は、吸血鬼MODです、プレーヤーは吸血鬼とハンターのどちらかでプレイを進めていきます。日本では馴染みが少ないMODですが、ブラッドマジックよりもわかりやすく、日本語化されているのでお勧めです。 ヴァンパイア ...
-
RPG配布マップです。マイクラのバージョンは1.7.2以降推奨とありましたが、1.7Xではクラッシュしてワールドに入れませんでした。バージョン1.8以降ではクラッシュせずに入れましたが、クリエイティブにしてスポーン地点にあるネザーゲートに火打石と打ち金で火をつけないとダメなようで...
-
フライシェンver1.03 Frishen は、HPが増えていく RPG アドベンチャー配布マップ。ソウルドリフトと同一作者でかなり作りこまれた配布ワールドです。ソウルドリフトとの違いは、決められた場所に決められた数のモンスターが沸くのでゴリ押し突破ができない、ボス戦前にHPの...
-
GVC_WW2_1.7.10.6は、マイクラのワールドが戦争中になるMOD、日本軍、アメリカ軍、ドイツ軍、ソ連軍の4か国の陸軍、海軍、空軍が至る所で戦闘をし、敵軍の基地を占拠して自国の旗を掲げます。 各軍のヘルメットをかぶって司令官になり戦争に参加可能です。 基地の生...
-
PixelmonGenerations-1.2.1での設定ですが、ピクセルモン、ピクセルモンリボーン、ピクセルモンジェネレーターでも同じだと思います。その他コンフィグを翻訳しています。 伝説スポーン率を上げる コンフィグ内のhoconファイル内の4項目を変更します #特定...
-
マイクラ大容量チェスト系MODの InfinityChest(インフィニティーチェスト)は一種類のアイテムを限りなく無限に収納できる大容量チェストです。使い勝手があまり良くない気がしますが、破壊してもアイテムは保持できます。アーカイブを利用を利用してダウンロードします。 バージ...
-
今回もMODパックより翻訳MODをチョイス Roguelike Adventures and Dungeons 2(RED2) ローグライク アドベンチャー アンド ダンジョンズ 2 名前の通りダンジョン系のMODパック 今までが工業寄りのMODOパックだったので変わったMOD...
-
マイクラで一番難しいのが迷子対策、通常世界ならまだしもネザーで迷子になったら、同じ景色が続くためにかなり時間をロスしてしまいます。そうならない為にネザーゲート(ネザーポータル)の座標をメモしたり、目印を付けておくのが鉄則となります。 対処法1:ネザーにネザーゲートを新たに作る...
-
Torcherino トーチリーノは、農作物の成長を加速させる松明を追加するMODです。松明の効果は、かまどやスポナーにも効果があります。工業系のMODアイテムにどの程度あるかは不明です。バージョンによってはコンフィグにて圧縮 Torcherino のレシピ解禁が必要です。1.1...
0 件のコメント:
コメントを投稿