戦闘を考える(その1)
本来周回させる戦闘に至る前に下準備や後始末を先に考えてしまうのはクセですね
一通り揃えないと結局あまり意味がないのでどっちゃでもいいと言えばいいんですけど
戦闘部分の操作も基本動作はこれまでの応用範囲なのであまり深く考えずに決め打ちで作ってしまうのも一つの手です
そもそも脳死レベルで回してるもんですし
elseif chkimgx("home_battle.bmp",NOXid) then //戦闘選択
P_adb_BTN(G_IMGX_X + delta_X ,G_IMGX_Y + delta_Y ,100,"Combat")
elseif chkimgx("field_select.bmp", NOXid, 630, 385, 790, 470, 1, 10, -1) then //戦役選択
P_adb_BTN(430 ,380 ,10,"Field Select") //0-2決め打ち
elseif chkimgx("mission_start.bmp",NOXid) then
P_adb_BTN(G_IMGX_X + delta_X ,G_IMGX_Y + delta_Y ,0,"Start")
elseif chkimgx("powerup2.bmp",NOXid,750, 625, 835, 675, 1, 10, -1) then //人形オーバー警告出たら戦闘開始中断、強化(分解)フラグ立ててホームまで画面を戻す
powerup = true //フラグ立て
P_adb_BTN(G_IMGX_X + delta_X ,G_IMGX_Y + delta_Y ,0,"Intrrupt powerup") //「強化」押す、強化画面直行するので処理繋がるはず
elseif chkimgx("HQ.bmp",NOXid,370,220,920,820,1,15,-1) then //0-2MAP表示された
sleep(3) //MAP表示の最中だとHQ位置がずれるので安定するまで待機
print "Verify HQ X:" + G_IMGX_X + " Y:" +G_IMGX_Y + " SCORE:" + G_IMGX_SCORE
//司令部選択
chkimgx("HQ.bmp",NOXid,370,220,920,820,1,15,-1) //0-2MAP表示された
P_adb_BTN(G_IMGX_X + delta_X ,G_IMGX_Y + delta_Y ,500 ,"Select HQ")
while true //部隊1決定(なりゆき
sleep(1)
ifb chkimgx("support_again.bmp",NOXid) then
break
endif
wend
//決定選択
P_adb_BTN(G_IMGX_X + delta_X ,G_IMGX_Y + delta_Y ,2000 ,"Apply")
sleep(4)
while true //MAP待ち
sleep(1)
ifb chkimgx("PORT.bmp",NOXid,x1,y1,x2,y2,1,15,-1) then
print "Found PORT X:" + G_IMGX_X + " Y:" +G_IMGX_Y
Px = G_IMGX_X
Py = G_IMGX_Y
break
endif
wend
//空港選択
P_adb_BTN(G_IMGX_X + delta_X ,G_IMGX_Y + delta_Y ,500 ,"Select PORT")
sleep(3)
while true //部隊2決定(なりゆき
sleep(1)
ifb chkimgx("support_again.bmp",NOXid) then
break
endif
wend
//決定選択
P_adb_BTN(G_IMGX_X + delta_X ,G_IMGX_Y + delta_Y ,1000 ,"Apply")
sleep(1)
//作戦開始押下
P_adb_BTN(1000 ,900 ,2000 ,"Battle Start")
諸般の事情で関数化によるメインループからの切り離しが出来ていない状態です
今回は戦場選択から部隊配置までのスクリプトです
5つのif文はそれぞれメインループ内で並列に条件分岐する対象としています
遠征帰還や倉庫満杯といった通常と違う画面に対して適宜フラグ操作しながらループに投げ返します
最後のif文がいわゆる戦場MAP表示を判定していて、ここまで画面が遷移すれば割込み要素は無くなるので純粋な戦闘操作の記述に入ります
注意点としてMAP上の司令部アイコン検索を2度実施している部分、細かい話ですが実際のMAP表示動作としてスクロールインしている最中に判断が差し掛かると最終位置まで到達していないアイコン座標を拾ってしまう誤動作の対策です
MAP画面に遷移した判断と実際に部隊配置するための座標取得を分けたということです
そもそもMAP表示も固定レイアウトと考えてあるべき位置を決め打ちしてアイコン有無を判断した方がシンプルになりそうです
部隊選択は手抜きです、第1部隊から順に配置しないのであれば部隊選択動作を追加しないといけません
次は作戦開始ボタン押してからの動作作り込みを考えましょう