オーラス麻雀ゲーム開発日記構想から現在までの開発記録を、公開順にまとめています。

開発日記一覧
オーラスの条件戦だけを繰り返し遊べる麻雀ゲームの開発記録です。TypeScript・Reactを使い、点数管理や順位計算から少しずつ制作しています。
前回までの進捗
前回は、牌山を使い切ったときに流局として局を終了できるようにした。
今回は、流局したときの4人の手牌を調べて、誰がテンパイしているのかを自動で判定する。
シャンテン数からテンパイを判定する
テンパイ判定には、これまで使っている麻雀ライブラリの手牌解析機能を利用する。
手牌からシャンテン数を計算し、
シャンテン数 0 → テンパイ
シャンテン数 1以上 → ノーテン
として扱うようにした。
自分でテンパイ判定のロジックを一から作るのではなく、麻雀ライブラリ側の計算結果を利用する形にしている。
4人全員の手牌をチェックする
流局したら、東家・南家・西家・北家それぞれの手牌を確認する。
テンパイしている席だけを一覧にして、
東・北
のような形で扱えるようにした。
誰もテンパイしていなければ全員ノーテン、4人ともテンパイしていれば全員として表示する。
流局した瞬間に自動判定する
流局状態になったら、自動的にテンパイ判定を実行するようにした。
それまで手動入力で扱っていた流局結果も、実際の対局で作られた手牌から設定される。画面には、
牌山がなくなったため、流局になりました。
テンパイ:東・北
のように表示される。
これで流局したあとに、プレイヤー側でテンパイしている席を入力する必要がなくなった。
テンパイ判定もテストする
手牌解析についてもテストを追加した。
確認しているのは、
- テンパイ手のシャンテン数が0になる
- ノーテン手は1以上になる
- 4人分の手牌からテンパイしている席だけを取得できる
といった部分。
対局の結果に関わる処理なので、画面表示だけでなく計算結果も確認しておく。
今回できたこと
今回の進捗は以下のとおり。
- 手牌のシャンテン数を計算できるようにした
- シャンテン数からテンパイ・ノーテンを判定した
- 4人のテンパイ状況を自動取得した
- 流局時にテンパイ判定を自動実行した
- テンパイしている席を画面に表示した
- 手牌解析のテストを追加した


これで、牌山がなくなって流局するだけでなく、その時点の手牌から結果を判定できるようになった。
次回は、CPUの打牌を単純なツモ切りから進めるため、麻雀AIライブラリを導入してAIプレイヤーを扱う準備をする。
チャッピーの指示に従って開発進めてるけど、アガリより流局判定が先なんだなのがちょっと意外。
まあいいけど。牛一。
コメント