Upgrade to Pro — share decks privately, control downloads, hide ads and more …

形四のWebアプリ作ってみた

 形四のWebアプリ作ってみた

2026.02.21 デジもく会 での発表

Avatar for 西村 備山

西村 備山

February 25, 2026

More Decks by 西村 備山

Other Decks in Technology

Transcript

  1. 既存の形四アプリ 「形四96番勝負」 by @dnjiro さん Android / Chromebook 版(Google Play)

    Windows版 (keishi96w.zip) Mac版 (keishi96m.zip) Amazon Fire タブレット版(Amazonアプリストア) X68000 Z版(kc96x.zip)
  2. Webアプリ版も作ってみた • UIは JavaScript で記述 • 思考エンジンは Rust で記述 •

    Rust → WebAssembly にビルド • ネイティブアプリと遜色ない速度
  3. ネット対戦機能がほしい • 人間 VS 人間 のネット対戦 • ソフト vs ソフト

    のネット対戦 • 通信仕様どうする? • サーバどこに立てる?
  4. 高速化の工夫 • ミニマックス法 → アルファ・ベータ法 (アルゴリズムの改良) • 二次元配列 → ビットボード

    (データ構造の改良) • 動的なオブジェクト生成をなるべく減らす • 無駄に同じ計算を繰り返さない。(メモ化)
  5. 静的評価関数 自乗形四率 (Square Keishi Rate) を以下のように定義 4つの石の座標を P i =

    (x i , y i ) (i = 1, 2, 3, 4) とする。 相互の距離の自乗は D(P i , P j ) = (x i – x j )2 + (y i – y j )2 その最大値を D max 、最小値を D min とするとき 自乗形四率 k = D min / D max は 0 < k ≦ ½ であり、 四点が正方形をなすとき k = ½ となる。 どれだけ正方形に近いかの簡易な指標となる。
  6. ヒューリスティック • 「必殺形」全30パターン (トリプル中パンチ) • 「恐怖系」全12パターン (大パンチ + ダブル中パンチ) •

    これを評価関数に取り入れるのは… • 判定処理が面倒すぎて断念。 ( パターンは 回転、反転、平行移動 もありうる )