AIの思考手順は 1.移動させることによって攻撃できるかどうかの判断 2.攻撃が出来るようになる駒の中で相手を撃破できる駒があるかどうか 3.相手撃破可能駒が複数ならより優先度が高い方を狙う 4.攻撃が出来るようになる駒は出来ない駒よりも優先される 5.どの駒も攻撃可能でないなら相手への移動距離が短い駒を優先して移動させる 6.攻撃は出来る限り行う

AIのレベルは3パターン(完全ランダム(一部思考)、少し思考、俺の作れる限り)

・一番弱いAIの行動パターン

まず、移動フェーズ開始時に移動可能駒と移動不可能駒に分ける 移動可能駒→自分の攻撃範囲に敵がいない 移動不可能駒→自分の攻撃範囲に敵がいる

移動不可能駒は移動対象にはならない 移動可能駒からランダムに移動させる このルーティーンを移動回数がなくなるまで続ける また、最初の移動可能駒と移動不可能駒の判定時に、全ての駒が移動不可能駒となった場合は、そのまま攻撃フェーズに移行する

次に攻撃フェーズ 攻撃フェーズはとにかくそのまま攻撃する 攻撃可能駒が攻撃しないことはない 攻撃対象が複数いる場合は、ランダムに攻撃する

・弱いAIの行動パターン

まず、移動フェーズ開始時に移動可能駒と移動不可能駒に分ける 移動可能駒→自分の攻撃範囲に敵がいない 移動不可能駒→自分の攻撃範囲に敵がいる

移動不可能駒は移動対象にはならない 移動可能駒の内、移動することで攻撃可能になる駒がいるかを探す →いる場合  複数いる場合はその中からランダムに一つを移動させる。単数ならそのまま移動 →いない場合  移動可能駒からランダムに移動させる このルーティーンを移動回数がなくなるまで続ける また、最初の移動可能駒と移動不可能駒の判定時に、全ての駒が移動不可能駒となった場合は、そのまま攻撃フェーズに移行する

次に攻撃フェーズ 攻撃フェーズはとにかくそのまま攻撃する 攻撃可能駒が攻撃しないことはない 攻撃対象が複数いる場合は、属性判定等を含めて最も大きなダメージを与えられる相手に攻撃する

・中間ぐらいの強さのAIの行動パターン

まず、移動フェーズ開始時に攻撃不可能駒と攻撃可能駒に分ける 攻撃不可能駒→自分の攻撃範囲に敵がいない 攻撃可能駒→自分の攻撃範囲に敵がいる 攻撃可能駒は、攻撃可能相手を全て取得 →全て不利属性な場合  その場に留まって攻撃することはそこまでプラスにならないので、移動対象にする →それ以外  攻撃の価値が高いので移動対象にはならない

移動は評価値方式。評価値が最も高いものが移動対象になる 攻撃不可能駒の内、移動することで攻撃可能になる駒がいるかを探す →いる場合(最も大きなダメージを与えられる駒が選ばれる)  駒ごとに以下を行う   移動先の攻撃対象を全て取得する   攻撃対象が不利属性でない場合は、評価値5+役職ポイント1   ※役職ポイント1(移動駒の役職が騎士1.5>騎馬1=魔法兵1>歩兵0.5>指揮官0の優先順位)→調整する   不利属性のみの場合は移動の価値が低いので評価値2+役職ポイント1   また、移動先が駒が後ろに下がるものである場合は評価値+0.5 →いない場合  移動先ごとに次の移動で攻撃可能になるか調べる   →なる場合     移動先の攻撃対象を全て取得する     攻撃対象が不利属性でない場合は、評価値3+役職ポイント2     ※役職ポイント2(移動駒の役職が騎士1.5>騎馬1=魔法兵1>歩兵0.5>指揮官0の優先順位)→調整する     不利属性のみの場合は移動の価値が低いので評価値1+役職ポイント2    →ならない場合     ならない場合は評価値1+役職ポイント3     →この時、移動先が駒が前進するものである場合は評価値+1     ※役職ポイント3(移動駒の役職が騎馬1.5>騎士1=魔法兵1>指揮官0.5>歩兵0の優先順位)→調整する 評価値が同じ場合はその中からランダムに選ぶ

このルーティーンを移動回数がなくなるまで続ける また、最初の移動可能駒と移動不可能駒の判定時に、全ての駒が移動不可能駒となった場合は、そのまま攻撃フェーズに移行する

次に攻撃フェーズ まず攻撃可能駒を選定する その後駒ごとに攻撃対象を取得する  →攻撃対象の数が単数の場合   そのまま攻撃する  →攻撃対象に指揮官が含まれる場合   そのまま攻撃する その後残りの駒を攻撃させる(攻撃対象が複数+対象に指揮官が含まれない)  攻撃で倒せる相手がいるなら最優先で攻撃する  それ以外の場合は属性判定等を含めて最も大きなダメージを与えられる相手に攻撃する

・作れないAI(未完成)

何かというと、撃破可能判定を含めたプログラムや数手先を読むタイプのやり方等 将棋とかを目指すならこれを作らないといけないけど、HPの概念もあるし正直今の自分では無理だと感じた。時間もかかりすぎるし。

まず、移動フェーズ開始時に攻撃不可能駒と攻撃可能駒に分ける 攻撃不可能駒→自分の攻撃範囲に敵がいない 攻撃可能駒→自分の攻撃範囲に敵がいる ・撃破可能駒の探索 攻撃可能駒の攻撃によって倒される駒があるのか調べる ある場合は絶対に移動させない(移動不可能駒) また、攻撃可能駒の移動によって撃破出来る駒があるのか調べる ある場合且つ攻撃不可能駒に撃破可能駒がないならその駒を移動させる

攻撃不可能駒→自分の攻撃範囲に敵がいない 攻撃可能駒→自分の攻撃範囲に敵がいる 移動不可能駒→移動せずに攻撃が可能+その攻撃が撃破可能 攻撃可能駒+撃破可能駒→自分の攻撃範囲に敵がいる+移動することで撃破可能 攻撃不可能駒+撃破可能駒→移動することで撃破可能になる

・優先順位(移動に関して) S+ 攻撃不可能駒+撃破可能駒→移動することで撃破可能になる S 攻撃可能駒+撃破可能駒→自分の攻撃範囲に敵がいる+移動することで撃破可能

A 攻撃不可能駒+移動攻撃可能駒→移動することで攻撃可能になる

B 2回移動撃破可能駒

C