去年、こんな感じでぷよぷよのCPU対戦を実装しました。
左の下手くそが私(久々の操作で戸惑ってる図)、右がCPUです。
ぷよぷよに関する知識が0なのでCPUのアルゴリズム自体はかなり単純です。
#アルゴリズム
-
ぷよの落下直前の位置・回転のパターンを全て探す
私の場合はステージ幅が横に6マスあったので、 -
🔴🔵(左右):この回転状態のぷよの位置は5パターン
-
🔵🔴(左右):この回転状態のぷよの位置も5パターン
-
🔴🔵(上下):この回転状態のぷよの位置は6パターン
-
🔵🔴(上下):この回転状態のぷよの位置も6パターン
以上の合計22パターンの状態でぷよが落下した場合の結果を総当たりで調べました。
-
落下予測位置から求められる結果を元にソートする
求める結果は次の3つです。- 連鎖の数
- 隣接する同色ぷよの数
- 最下マスとぷよの間に入るマスの数(距離)
優先順位は上から順番になっています。例えば予測連鎖数の同じ2つの落下パターンがあれば、隣接する同色ぷよの数が多い方が優位になりますし、これも同じであれば地面との距離がなるべく近くなる置き方を試みます。
ちなみにこのまま実装すると、3つの結果全てが一致するパターンが上位に複数あった場合に左側に積みがちになるなど、検索を行った順に優先順位が設定されてしまうので、私は一応都度検索の順序をシャッフルしたりしていました。
#このアルゴリズムの問題点
仕込みなどの概念がないのでシンプルに弱いです。作った人の頭が足りないとこうなります。ぷよぷよ難しい・・・
ただ「CPU対戦(難易度:易しい)」という設定で遊べるものにはなってると思います。多分。
#追記
よくよくGIF画像のCPUの動きを見てみたら縦に落ちるぷよが1つもないですね。作った当時は気付かなかったのですが何かしらバグがありそうです😢
精進ですね。(直す気力がない)