条件
マイニングタートルを使用
燃料は補給済み、またはMODコンフィグにて燃料不要に設定
採掘範囲は、縦8x横8x深さ10(今後変更していきます)
ユーザーの定義文字はわかりやすくするために大文字やローマ字を多用しています
プログラムエディタの Sublime Text を使用
タートルのAPIはこちらで確認できます
基本となる一列を掘るプログラム
使用するタートルAPI
turtle.digDown()--下を壊す
turtle.down()--下に行く
turtle.dig()--前を掘る
turtle.forward()--前に行く
--1.のプログラム
turtle.digDown()--下のブロック1を掘る
turtle.down()--下に一段下がる
turtle.dig()--3のブロックを掘る
turtle.forward()--3の位置に移動
turtle.dig()--4のブロックを掘る
turtle.forward()--4の位置に移動
turtle.dig()--5のブロックを掘る
turtle.forward()--5の位置に移動
turtle.dig()--6のブロックを掘る
turtle.forward()--6の位置に移動
turtle.dig()--7のブロックを掘る
turtle.forward()--7の位置に移動
turtle.dig()--8のブロックを掘る
turtle.forward()--8の位置に移動
--1.のプログラムの終わり
このプログラムで繰り返すの動作を考えます
--1.のプログラム
turtle.digDown()--下のブロック1を掘る
turtle.down()--下に一段下がる
--1回目
turtle.forward()--3の位置に移動
turtle.forward()--4の位置に移動
turtle.forward()--5の位置に移動
turtle.forward()--6の位置に移動
turtle.forward()--7の位置に移動
turtle.forward()--8の位置に移動
--1.のプログラムの終わり
ループカウンターを使用して繰り返すの動作をまとめます
for␣定義=初期値,終わり値␣do
実行すること(何行でも)
end
--2.のプログラム
turtle.digDown()--下の1のブロックを壊す
turtle.down()--1のブロックの一段下に行く
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
turtle.dig()--前を壊す
turtle.forward()--前に行く
end--ループTATEの終わり
--2.のプログラムの終わり
※プログラムのポイント
ループカウンターの書き方
定義の「TATE」は、tate、A、a、などでもよいですが数字や記号は使用できません。
「for TATE=2,8 do」の定義のTATEには、2~8までの数字が入り、2回目、3回目~と処理を進めていきます。
「2,8 do」は、7回繰り返すの意味で「1,7 do」でも同じですが、「2」のブロックの破壊からループが始まるという意味で初期値を「2」としています。
インデントを入れてでプログラムを見やすくします
--2.のプログラム
turtle.digDown()--下の1のブロックを壊す
turtle.down()--1のブロックの一段下に行く
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
turtle.dig()--前を壊す
turtle.forward()--前に行く
end--ループTATEの終わり
--2.のプログラムの終わり
※プログラムのポイント
--3.のプログラム
for A=1,7 do--前を壊す、前に行くを7回繰り返すループA
turtle.dig()--前を壊す
turtle.forward()--前に行く
end--ループAの終わり
このようにしても同じ動作となります。定義名や繰り返す回数は、この段階ではあまり重要ではありませんが、複雑なプログラムでは重要になってきます。
※プログラムのポイント
ループカウンターの位置が重要になります。プログラムでは「前を壊して前に行く」ですが、逆に「前に行って前を壊す」では、プログラムは下のようになります。
--4.のプログラム
turtle.digDown()--下の1のブロックを壊す
turtle.down()--1のブロックの一段下に行く
turtle.dig()--前を壊す
for TATE=3,8 do--前に行く、前を壊すを6回繰り返すループTATE
turtle.forward()--前に行く
turtle.dig()--前を壊す
end--ループTATEの終わり
turtle.forward()--前に行く
--4.のプログラムの終わり
上記のようにしても同じ動作となりますが、2行ほど長くなってしまいます。プログラムは「短い方がいい」を心掛けていくことが上達するコツです。
次のページ「右回り左回りに列を移動する」
前のページ「Sublime Text で効率よくプログラムを書く」
プログラムエディタの Sublime Text を使用
タートルのAPIはこちらで確認できます
A列の「1」から「8」までのブロックを一段掘り下げるプログラムを考えます。まずは、タートルの動作を書き出します。スタート位置は「1」です。
使用するタートルAPI
turtle.digDown()--下を壊す
turtle.down()--下に行く
turtle.dig()--前を掘る
turtle.forward()--前に行く
--1.のプログラム
turtle.digDown()--下のブロック1を掘る
turtle.down()--下に一段下がる
turtle.dig()--2のブロックを掘る
turtle.forward()--2の位置に移動turtle.dig()--3のブロックを掘る
turtle.forward()--3の位置に移動
turtle.dig()--4のブロックを掘る
turtle.forward()--4の位置に移動
turtle.dig()--5のブロックを掘る
turtle.forward()--5の位置に移動
turtle.dig()--6のブロックを掘る
turtle.forward()--6の位置に移動
turtle.dig()--7のブロックを掘る
turtle.forward()--7の位置に移動
turtle.dig()--8のブロックを掘る
turtle.forward()--8の位置に移動
--1.のプログラムの終わり
「1」のブロックを壊したあとタートルは一段下がります、そのあとは前のブロックを壊す、前に行くを7回繰り返しています。
turtle.digDown()--下のブロック1を掘る
turtle.down()--下に一段下がる
--1回目
turtle.dig()--2のブロックを掘る
turtle.forward()--2の位置に移動
--2回目
turtle.dig()--3のブロックを掘るturtle.forward()--3の位置に移動
--3回目
turtle.dig()--4のブロックを掘るturtle.forward()--4の位置に移動
--4回目
turtle.dig()--5のブロックを掘るturtle.forward()--5の位置に移動
--5回目
turtle.dig()--6のブロックを掘るturtle.forward()--6の位置に移動
--6回目
turtle.dig()--7のブロックを掘るturtle.forward()--7の位置に移動
--7回目
turtle.dig()--8のブロックを掘るturtle.forward()--8の位置に移動
--1.のプログラムの終わり
ループカウンターを使用して繰り返すの動作をまとめます
for␣定義=初期値,終わり値␣do
実行すること(何行でも)
end
--2.のプログラム
turtle.digDown()--下の1のブロックを壊す
turtle.down()--1のブロックの一段下に行く
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
turtle.dig()--前を壊す
turtle.forward()--前に行く
end--ループTATEの終わり
--2.のプログラムの終わり
※プログラムのポイント
ループカウンターの書き方
定義の「TATE」は、tate、A、a、などでもよいですが数字や記号は使用できません。
「for TATE=2,8 do」の定義のTATEには、2~8までの数字が入り、2回目、3回目~と処理を進めていきます。
「2,8 do」は、7回繰り返すの意味で「1,7 do」でも同じですが、「2」のブロックの破壊からループが始まるという意味で初期値を「2」としています。
インデントを入れてでプログラムを見やすくします
--2.のプログラム
turtle.digDown()--下の1のブロックを壊す
turtle.down()--1のブロックの一段下に行く
for TATE=2,8 do--前を壊す、前に行くを7回繰り返すループTATE
turtle.dig()--前を壊す
turtle.forward()--前に行く
end--ループTATEの終わり
--2.のプログラムの終わり
※プログラムのポイント
インデントで「for」と「end」間をスペースで内側に移動します。これをすることでプログラムが読みやすくなります。
--3.のプログラム
for A=1,7 do--前を壊す、前に行くを7回繰り返すループA
turtle.dig()--前を壊す
turtle.forward()--前に行く
end--ループAの終わり
--3.のプログラムの終わり
このようにしても同じ動作となります。定義名や繰り返す回数は、この段階ではあまり重要ではありませんが、複雑なプログラムでは重要になってきます。
※プログラムのポイント
ループカウンターの位置が重要になります。プログラムでは「前を壊して前に行く」ですが、逆に「前に行って前を壊す」では、プログラムは下のようになります。
--4.のプログラム
turtle.digDown()--下の1のブロックを壊す
turtle.down()--1のブロックの一段下に行く
turtle.dig()--前を壊す
for TATE=3,8 do--前に行く、前を壊すを6回繰り返すループTATE
turtle.forward()--前に行く
turtle.dig()--前を壊す
end--ループTATEの終わり
turtle.forward()--前に行く
--4.のプログラムの終わり
上記のようにしても同じ動作となりますが、2行ほど長くなってしまいます。プログラムは「短い方がいい」を心掛けていくことが上達するコツです。
次のページ「右回り左回りに列を移動する」
前のページ「Sublime Text で効率よくプログラムを書く」
0 件のコメント:
コメントを投稿