テトリスAIの仕組み
― 全探索・評価関数・生存モード ―

本記事では、Web Tetris DX に実装されている 思考型AI が 「どのように盤面を見て、どの手を選んでいるのか」を 実装者視点で解説します。

① 全探索(シミュレーション)

AIは新しいミノが出現した瞬間、現在の盤面に対して 「可能なすべての置き方」をシミュレーションします。

  • 移動と回転の全パターン
    左右の移動(0〜9列)と、4つの回転状態(0°, 90°, 180°, 270°)をすべて試します。
  • SRS(壁蹴り)の考慮
    壁際で回転した際のズレ(キック)も含め、実際に着地可能な形だけを評価対象にします。
  • ホールドの活用
    「今のミノを置く場合」と「ホールドして入れ替える場合」の両方を試し、 スコアが高い方を選択します。

② 評価関数(盤面の採点)

シミュレーションした結果の盤面を、 「どれだけ有利か」という基準で点数化します。

評価項目 内容 AIの判断
高さ(Sum Height) 積み上がったブロックの合計高さ 低いほど高得点
穴の数(Holes) 下にブロックがある空洞の数 最優先で回避(1つでも大幅減点)
凹凸(Bumpiness) 隣り合う列の高さの差 平らなほど高得点
右端の確保 9列目を空けておく テトリス狙いとして加点
穴の評価は特に重く設定しています。
「高さが低くても穴が多い盤面」は、将来的に詰む可能性が高いためです。

③ 生存本能(状況判断の切り替え)

このAIの最大の特徴は、 盤面の高さによって思考方針が切り替わる点です。

通常モード(高さが低いとき)

  • 4列消し(テトリス)以外は基本的に狙わない
  • 1列だけ消える置き方にはマイナス評価
  • 右端を空け、綺麗な形を維持する

生存モード(高さが16段を超えたとき)

  • とにかくラインを消すことを最優先
  • 1列消し・穴埋めも許容
  • 目的は「盤面を下げて延命すること」
「美しさ」よりも「生き残ること」を選ぶ瞬間がある。
それがこのAIの“本能”です。

④ 実行プロセス

評価結果をもとに、AIは次の手を決定します。

  • 思考getBestMove() が最適な x 座標と回転数を算出
  • 操作:回転 → 横移動 → ハードドロップの順で実行
  • NEXT先読み:次のミノが置きにくくなる手を避ける

このAIを実装した Web Tetris DX は、実際にブラウザで遊べます。

Web Tetris DX を遊ぶ