忍者ブログ

cc-memo

Computer Craft のメモ

バグ取り

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

バグ取り

(注:バグまだ取れてません、、、)

『テスト用拠点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機での成績はこんな感じ。
PR

コメント

プロフィール

HN:
kssr
性別:
非公開

Twitter

最古記事

(04/25)
(04/26)
(04/27)
(04/28)
(04/29)

アンテナ・ランキング