#ゲーム
10 件
落下点を計算するが、少しだけ外す相手
遊べるポン AI に必要なのは二つ。ボールの落下点を正確に求めること、そして毎回わざと少し外すこと。前者は三角波一回、後者はラリーごとに引き直します。
ゲームループ:なぜ delta time が必須なのか
毎フレーム 5 ピクセル動かすと、60Hz では正常でも 144Hz では 2.5 倍速くなります。経過時間を掛けて物理をリフレッシュレートから切り離し、さらに上限を設けます。
五目並べ AI:必殺判定と探索の分業
素の alpha-beta では五目で必殺手を逃します。勝ち・受け・活四の三段で確定する手を先に処理し、残りだけを反復深化と置換表に渡す構成にしました。
AI の思考過程をめくれる木にする
探索の可視化で難しいのは木を描くことではなく、数値が本物であること、盤を押しのけないこと、押さない人に負担をかけないことでした。
中国将棋のルールで間違えやすい四箇所
馬の足止め、象の目塞ぎ、砲の台越し、両王対面。着手生成を幾何層と合法層に分けることで、間違いの大半は消えました。
リバーシの合法手:8 方向を 1 回の走査で
空きマスが合法なのは、8 方向のうち少なくとも 1 方向で相手を挟める場合です。判定と反転は同じ走査で済み、置いて戻すシミュレーションは要りません。
数独ジェネレーター:穴を掘り、唯一解を保つ、そしてページを固めたバグ
完成した解を先に作り、一マスずつ掘りながら唯一解を検証します。求解器で 0 を「無制限」と解釈していたため、空盤では全解を列挙し、新規ゲームが固まりました。
五目並べの勝敗判定:置いた 1 点だけ見れば足りる
着手ごとに盤面全体を走査するのは無駄です。勝敗は最新の 1 手でしか変わりません。置いた点から 4 方向へ伸ばして数えれば、盤面の大きさに依りません。
2048:四方向を一つの操作に畳み込む
スライド・合成・得点は一度書けば足り、残り三方向は転置と反転で再利用できます。難しいのは「各タイルは 1 回の移動で最大 1 回しか合成しない」という規則です。
マインスイーパー:地雷の配置を最初のクリックまで遅らせる
最初のクリックで負けうるマインスイーパーは未完成です。配置を遅らせ、クリック位置の周囲 3×3 を除外することが、ここで最も重要な設計判断です。
