(注:バグまだ取れてません、、、)
『テスト用拠点6号』。
『遠征どこでもドア』と『ChickenChunks』を愛用しています。
今回はバグ取りをしてゆきます。
タートル同士で共食いをしてしまう件。掘られたタートルが持っていたアイテムが散らばってしまうので、デフォルトでは行えないようにする。<<< 1 >>>
目の前にブロックが有って、それがタートルではない場合は掘っても良い。という条件にした。
(turtle.detect() == true かつ、peripheral.getType("front") が "turtle" を返さない場合。)
turtle.detect()を条件に加えていないと、
判定しようとしている場所に、タートルが移動して入り込んできているが、まだ止まっていない状態を検知できずに、タートルをdig()してしまう。
この時、peripheral.getType("front") 等が "turtle" を返さない為。
でも、溶岩や水源等もturtle.detect() == falseなので、それらを掘って排除することが出来なくなってしまった。
拠点を作ろうとした場所に溶岩の池があったとしても、これまでは、溶岩を掘って消し去ることが出来たのだが、これからどうしたものか、、、(拠点を作る場合は、他のタートルを壊しても良い、というふうに割り切るのも何か微妙。)
次、
砂
砂
砂
亀石
石石 石石
石 石
石 石
石石石
の場合にうまくいかない件。<<< 2 >>>
sleep()の時間を調節する方法だと、
・穴が想定よりも深い場合
・積んである砂の個数が想定よりも多い場合
の動作を保証できない。
特に問題ない場合にsleep()時間が長いと鬱陶しくもあるし。
以下のように変更。
移動する直前の動作が移動先の方向へのdig()だった場合、移動失敗時には、移動が成功するまでdig()/移動を繰り返す。代わりにdig()を若干高機能化しているmyDig()のほうでは、あまりしつこく「dig()⇔待機」を繰り返さない。
「ミニ言語」でe1f とか e0u とか e2d の場合はそのように機能する。
次、
fuelLevelが2000を切っている場合に、再度燃料投入する部分の動作確認。<<< 3 >>>
確認/修正した。
処理の順序も改善した。
(出発、納品、給油確認の順ではなく、給油確認、出発、納品に直した。)
次、
Y座標がずれる件 <<< 4 >>>
miningの「ミニ言語」で書いたスクリプトを直した。(そこらじゅうで、無警戒に下移動していたが、下堀り、下移動(e2d)と書いておかないと、溶岩+水で新たな障害物が発生して正しく移動できない。)
また一晩流して様子を見ることにする。
一晩放置してみた結果、まだ駄目っぽい。
・30段目まで仕事をこなして、燃料切れで行儀よく待っていた猛者有り。
そいつの個人成績
・次点は29段目までで、同じく燃料切れ。
「mining」プログラムをいじりだしてから初めてエメラルドが出た。たったの1コ。
・
対策を入れたのに、タートル同士の共食い事案が2件発生。
・
対策を入れたのに、砂利に邪魔されて止まる事案が4件発生。
・
対策を入れたのに、Y座標のずれがひどくなった気がする。
というか、上にずれる現象は抑えられたが、下にずれる現象が頻発している模様。
⇒行方不明箇所と思われる、最後の枝掘り部分の先端を
いくら探しても見つからないと思ったら、拠点の床下で燃料切れで止まっていたり、、、
・8機中1機。しつこく探しているが見つからない。
⇒タートルでクアーリ風に掘るプログラムを書いて探索すれば良いか、、、
※行方不明タートル探すのちょっと楽しい。
マッチポンプですが。
・レッドストーンブロックとか作るの面倒くさい。
マイニングタートル8機での成績はこんな感じ。