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

前回までの進捗
前回は、必要点数を最初は隠して、自分で条件を考えてから答え合わせできるようにした。
これまではオーラスの点数条件を計算・確認する部分を中心に作ってきたが、今回はそこから一歩進めて、実際の麻雀の進行部分に手を付ける。
麻雀ライブラリを導入する
牌山の生成やツモ、手牌、ドラなどをすべて一から作ることもできる。
ただ、麻雀には細かいルールや処理が多いため、今回は@kobalab/majiang-coreという麻雀ライブラリを利用することにした。
まずはライブラリをプロジェクトへ追加し、自分のアプリから扱える状態にした。
まずは牌山を作ってみる
最初から対局全体を動かそうとすると複雑になるので、まずは小さな動作確認から始めた。
今回確認したのは、
- 牌山を生成できる
- 牌山から1枚ツモれる
- ツモ後に残り枚数が減る
- ドラ表示牌を取得できる
という基本的な部分。
牌山を作った直後の枚数を取得し、1枚ツモしたあとに残り枚数が1枚減っていることを確認する。
さらに、ツモした牌やドラ表示牌が正しい牌コードになっているかもテストした。
ライブラリとの間に処理を挟む
ライブラリをアプリの各所から直接使うのではなく、majiangAdapter.tsというファイルを用意した。
アプリ
↓
majiangAdapter
↓
麻雀ライブラリ
という形にしている。
こうしておけば、麻雀ライブラリ側の書き方を画面や他の処理まで広げずに済む。
今後、配牌やツモなどの処理が増えても、この部分を窓口として扱えるようにするつもり。
TypeScriptで扱うための型も追加する
今回使うライブラリをTypeScriptから扱うため、必要な部分について型定義も用意した。
最初からライブラリ全体を型定義するのではなく、
- 牌山を作る
- 1枚ツモる
- 残り枚数を取得する
- ドラ表示牌を取得する
といった、現時点で使う部分だけを定義している。
必要になった機能から少しずつ増やしていく形にした。
テストで動作を確認する
牌山まわりは画面から見えない処理なので、Vitestで動作確認も追加した。
確認しているのは、
- 牌山を作成できる
- 1枚ツモできる
- ツモ後に残り枚数が減っている
- ツモ牌が有効な牌コードになっている
- ドラ表示牌が取得できる
といった内容。
これで、実際の麻雀を進行させるための最初の土台ができた。
今回できたこと
今回の進捗は以下のとおり。
- 麻雀ライブラリを導入した
- 牌山を生成できるようにした
- 牌山から1枚ツモできるようにした
- 残り牌数を取得できるようにした
- ドラ表示牌を取得できるようにした
- 基本動作をテストで確認した
ここまではまだ画面上で麻雀が遊べるわけではないが、これまでの点数条件計算とは違って、実際の対局処理の土台に入り始めた。
次回は、この牌山を使って4人分の配牌を作り、親の第一ツモまで進められるようにする。
ちょっと最近仕事が忙しくて、開発もブログ更新もギリギリ最低ラインを低空飛行中…。
牛一。
コメント