第二回。
まずは初心者が始めて書いたスクリプトを見てほしい。
私が頭の中でイメージしている感じでは、
1.戦闘開始までは手動。
2.1wave目、全体攻撃を放つ。
3.2wave目、全体攻撃。
4.最終wave、ボスを選択しボスを単体攻撃で撃破。
5.ボス撃破後、メニューを開きドロップ内容を確認。
6.レア箱が0個の場合、リタイアを選択し、リトライ。以後ループ。
7.レア箱が1個の場合、ループ脱出。
という感じ。
ところがここで画面を眺めていると異変に気がつく。
「レア箱落ちたけど、リタイア選択してね?コイツ?」
原因を探す旅が始まったのだ。
しかも問題も多くて、実際にレア泥確認したあとループ抜け出せんのか?という疑問も残る。
そこで私は一度、コモン箱ドロップ時にループから抜け出せるか試してみた。
: if aapo.touchImg('./template/Leg-00.png'):
検索する画像を変える為に
: if aapo.touchImg('./template/Co-00.png'):
書き換えを行った。
これだとコモン箱が落ちた時にループから抜け出せるのではないか?と考えた。
そして再度スクリプトを流してみるとあら不思議、
ループから抜け出せないどころか普通にgive upを選択していったのだ。
はて、全く原因がわからない。
if構文の後にelse文打ち込んでるから、コモン箱が
上記の通りになったら条件式が偽になるのでbreakするはずなのだ。(拙僧の書いたスクリプトがマトモだと過程しているが)
ただ、条件式で画像部分の座標を返してくれるのでそれも確認してみると
どうやらコモン箱の横のアンコモン箱座標をタップしている事がわかった。
つまり、openCVくんが
「箱の形が似てるし「×00」の部分があるからこっちやな、おかのした」と条件式を真にしていたということがわかったのだ。
これではスクリプトの正否以前の問題だ。
完全一致かと思ったが曖昧一致だったのだ。
…次回へ続く。