岩盤まで掘りぬきましたが当然チェストには、アイテムは入りきれません
タートルのAPIはこちらで確認できます
今までのプログラムでは一面を掘りぬく考え方は、ループYOKOを4回としていましたが、今回は「一列を掘り進む」ループTATEを8回で考えていきます。
基本となる一列を掘り進むループTATE
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
turtle.dig()--前を壊す
turtle.forward()--前に行く
end--ループTATEの終わり
この後の処理を「if」分で3分岐とします
1番目の分岐:スタート地点に戻るのか
2番目の分岐:右回りに列を移動するのか
3番目の分岐:左回りに列を移動するのか
--今回のプログラム
local YOKOcount=0--定義YOKOcountは「0」
for HUKASA=1,100 do--一面を百段掘るループHUKASA
--今回のプログラムの終わり
コンフィグの定義
local YOKOcount=0--定義YOKOcountは「0」
ユーザーが文字設定して値を指定するルールを決めるようなものです
local␣定義文字=値
YOKOcountの値を初期値「0」と定めます
右回りに列を移動したら「-1」と変更します
左回りに列を移動したら「0」と変更します
ループYOKOが8回終わったら「0」と変更します
YOKOcount=0--YOKOcountを「0」に変更
YOKOcountは「0」になり、次に「8」の位置でタートルは右回りに列を移動します
turtle.forward()--前に行く
end--ループTATEの終わり
この後の処理を「if」分で3分岐とします
1番目の分岐:スタート地点に戻るのか
2番目の分岐:右回りに列を移動するのか
3番目の分岐:左回りに列を移動するのか
--今回のプログラム
local YOKOcount=0--定義YOKOcountは「0」
for HUKASA=1,100 do--一面を百段掘るループHUKASA
turtle.digDown()--下を掘る
turtle.down()--下に行く
for YOKO=1,8 do--ループYOKOは、1~8まで実行
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
turtle.dig()--前を壊す
turtle.forward()--前に行く
end--ループTATEの終わり
turtle.turnRight()--右を向く
turtle.dig()--前を壊す
turtle.down()--下に行く
for YOKO=1,8 do--ループYOKOは、1~8まで実行
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
turtle.dig()--前を壊す
turtle.forward()--前に行く
end--ループTATEの終わり
if YOKO==8 then--もしもループYOKOが「8」なら
turtle.turnRight()--右を向いてスタート方向を向く
for HOME=2,8 do--ループHOMEは、2~8まで実行
turtle.forward()--前に行く
end--ループHOMEの終わり
YOKOcount=0--YOKOcountを「0」に変更
elseif YOKOcount==0 then--もしもYOKOcountが「0」ならturtle.turnRight()--右を向いてスタート方向を向く
for HOME=2,8 do--ループHOMEは、2~8まで実行
turtle.forward()--前に行く
end--ループHOMEの終わり
YOKOcount=0--YOKOcountを「0」に変更
turtle.turnRight()--右を向く
turtle.dig()--前を壊す
turtle.forward()--前に行く
turtle.turnRight()--右を向く
YOKOcount=-1--YOKOcountを「-1」に変更
elseif YOKOcount==-1 then--もしもYOKOcountが「-1」なら
turtle.turnLeft()--左を向く
elseif YOKOcount==-1 then--もしもYOKOcountが「-1」なら
turtle.turnLeft()--左を向く
turtle.dig()--前を壊す
turtle.forward()--前に行く
turtle.turnLeft()--左を向く
YOKOcount=0--YOKOcountを「0」に変更
YOKOcount=0--YOKOcountを「0」に変更
end--もしもの終わり
end--ループYOKOの終わり
end--ループYOKOの終わり
turtle.turnLeft()--左を向く(チェストの方を向く)
for AGARU=1,HUKASA do--ループAGARUは、1~ループHUKASAまで実行
turtle.up()--上に行く
end--ループAGARUの終わり
for SLOT=1,16 do--ループSLOTは、1~16まで実行
turtle.select(SLOT)--タートルスロット「SLOT」を選択
turtle.drop()--チェストに入れる
end--ループSLOTの終わり
for SAGARU=1,HUKASA do--ループSAGARUは、1~ループHUKASAまで実行
turtle.down()--下に行く
end--ループSAGARUの終わり
turtle.turnRight()--右を向く
for AGARU=1,HUKASA do--ループAGARUは、1~ループHUKASAまで実行
turtle.up()--上に行く
end--ループAGARUの終わり
for SLOT=1,16 do--ループSLOTは、1~16まで実行
turtle.select(SLOT)--タートルスロット「SLOT」を選択
turtle.drop()--チェストに入れる
end--ループSLOTの終わり
for SAGARU=1,HUKASA do--ループSAGARUは、1~ループHUKASAまで実行
turtle.down()--下に行く
end--ループSAGARUの終わり
turtle.turnRight()--右を向く
turtle.turnRight()--右を向く
end--ループHUKASA終わり
end--ループHUKASA終わり
コンフィグの定義
local YOKOcount=0--定義YOKOcountは「0」
ユーザーが文字設定して値を指定するルールを決めるようなものです
local␣定義文字=値
YOKOcountの値を初期値「0」と定めます
右回りに列を移動したら「-1」と変更します
左回りに列を移動したら「0」と変更します
ループYOKOが8回終わったら「0」と変更します
1番目の分岐
if YOKO==8 then--もしもループYOKOが「8」なら
ループYOKOが「8回目を終えたら」でスタート地点に戻ります
タートルの位置は「64」です
turtle.turnRight()--右を向いてスタート方向を向く
for HOME=2,8 do--ループHOMEは、2~8まで実行
turtle.forward()--前に行く
end--ループHOMEの終わり
タートルの位置は「64」です
turtle.turnRight()--右を向いてスタート方向を向く
for HOME=2,8 do--ループHOMEは、2~8まで実行
turtle.forward()--前に行く
end--ループHOMEの終わり
YOKOcount=0--YOKOcountを「0」に変更
YOKOcountは「0」になり、次に「8」の位置でタートルは右回りに列を移動します
2番目の分岐
elseif YOKOcount==0 then--もしもYOKOcountが「0」なら
YOKOcountが「0」なら「右回りに列を移動」
タートルの位置は「8、24、40、56」です
turtle.turnRight()--右を向く
turtle.dig()--前を壊す
YOKOcount=-1--YOKOcountを「-1」に変更
タートルの位置は「8、24、40、56」です
turtle.turnRight()--右を向く
turtle.dig()--前を壊す
turtle.forward()--前に行く
turtle.turnRight()--右を向く
YOKOcount=-1--YOKOcountを「-1」に変更
YOKOcountは「-1」になります
3番目の分岐
3番目の分岐
elseif YOKOcount==-1 then--もしもYOKOcountが「-1」なら
YOKOcountが「-1」なら「左回りに列を移動」
タートルの位置は「16、32、48」です
タートルの位置は「16、32、48」です
turtle.turnLeft()--左を向く
YOKOcount=0--YOKOcountに「0」に変更
YOKOcountは「0」になります
※プログラムのポイント
elseif(違うなら、もしもこっちなら)とつなげていくことで、分岐を無限に作っていくことができます。難しくなりますが、タートルにより複雑な動きのコントロールも可能になります。
※プログラムの考え方
スタート時は、YOKOcountは「0」
①一段掘り下げる
②YOKOcountが「0」なら右回りに列を移動してYOKOcountを「-1」に変更
③YOKOcountが「-1」なら左回りに列を移動してYOKOcountを「0」に変更
turtle.dig()--前を壊す
turtle.forward()--前に行く
turtle.turnLeft()--左を向く
YOKOcount=0--YOKOcountに「0」に変更
YOKOcountは「0」になります
※プログラムのポイント
elseif(違うなら、もしもこっちなら)とつなげていくことで、分岐を無限に作っていくことができます。難しくなりますが、タートルにより複雑な動きのコントロールも可能になります。
※プログラムのポイント
一番目の分岐にループYOKOとすることが重要となります。「YOKOcount」の右回り「0」、左回り「-1」は、必ずどちらかが当てはまってしましますので、まず横の移動のループYOKOを終える分岐を最初に書き込む必要があります。
※プログラムの考え方
スタート時は、YOKOcountは「0」
①一段掘り下げる
②YOKOcountが「0」なら右回りに列を移動してYOKOcountを「-1」に変更
③YOKOcountが「-1」なら左回りに列を移動してYOKOcountを「0」に変更
これを8回繰り返して
④ループYOKOが「8」ならスタート地点に戻りYOKOcountを「0」に変更
⑤チェストにアイテムを入れる
これを岩盤まで繰り返します
次のページ「往復の採掘でクアーリーの動きを再現」
前のページ「if 文を使用して列の移動を終える」
④ループYOKOが「8」ならスタート地点に戻りYOKOcountを「0」に変更
⑤チェストにアイテムを入れる
これを岩盤まで繰り返します
次のページ「往復の採掘でクアーリーの動きを再現」
前のページ「if 文を使用して列の移動を終える」
0 件のコメント:
コメントを投稿