麻雀役判定方法

麻雀役判定方法を説明します

手牌インスタンスを生成

和了型の判定方法 を参考に手牌インスタンスを生成します

int[] tiles = {
            0, 2, 2, 2, 0, 0, 0, 0, 0,
            0, 0, 2, 0, 1, 1, 1, 0, 0,
            0, 0, 1, 1, 1, 0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0
        };
        MahjongTile last = MahjongTile.M4;
        hands = new MahjongHands(tiles, last);

役判定させる

生成した手牌をMahjongクラスのコンストラクタ引数として入力します
calculate()を実行することで役判定を実行します

int[] tiles = {
            0, 2, 2, 2, 0, 0, 0, 0, 0,
            0, 0, 2, 0, 1, 1, 1, 0, 0,
            0, 0, 1, 1, 1, 0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0
        };
        MahjongTile last = MahjongTile.M4;
        hands = new MahjongHands(tiles, last);
        mahjong = new Mahjong(hands);
        mahjong.calculate();

🚧

状況が絡む役は判定出来ません

例えば、天和/リーチ/嶺上開花/ドラ/自風牌などの
状況が絡む役の判定は出来ません
今後のバージョンをお待ちください。

判定した役を取得する

getNormalYaku()もしくはgetYakuman()により、
判定された役を取得します

int[] tiles = {
            0, 2, 2, 2, 0, 0, 0, 0, 0,
            0, 0, 2, 0, 1, 1, 1, 0, 0,
            0, 0, 1, 1, 1, 0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0
        };
        MahjongTile last = MahjongTile.M4;
        hands = new MahjongHands(tiles, last);
        mahjong = new Mahjong(hands);
        mahjong.calculate();
        
        List<MahjongYakuEnum> yakuList = mahjong.getNormalYakuList();
        for (MahjongYakuEnum mahjongYakuEnum : yakuList) {
            System.out.println(mahjongYakuEnum.getJapanese());
        }

このプログラムの出力は以下のようになります

一盃口
平和
タンヤオ