コード例 #1
0
        protected override bool Test(ICollection <YakuValue> result, ITiles tiles, IGroups groups, YakuEnvironment env)
        {
            const KanjiTile.Kanji check = KanjiTile.Kanji.东 | KanjiTile.Kanji.南 | KanjiTile.Kanji.西 | KanjiTile.Kanji.北;

            if (groups.PungList.Any(g => !(g.Key is KanjiTile t) || (t.Value & check) == 0))
            {
                return(false);
            }
            result.Add(YakuValue.FromFullYaku(this, "大四喜", 1));
            return(true);
        }
コード例 #2
0
        protected override bool Test(ICollection <YakuValue> result, ITiles tiles, IGroups groups, YakuEnvironment env)
        {
            const KanjiTile.Kanji check = KanjiTile.Kanji.白 | KanjiTile.Kanji.发 | KanjiTile.Kanji.中;
            int count = groups.PungList.Count(g => g.Key is KanjiTile t && (t.Value & check) != 0);

            if (count < 3)
            {
                return(false);
            }

            result.Add(YakuValue.FromFullYaku(this, "大三元", 1));
            return(true);
        }
コード例 #3
0
        protected override bool Test(ICollection <YakuValue> result, ITiles tiles, IGroups groups, YakuEnvironment env)
        {
            const KanjiTile.Kanji check = KanjiTile.Kanji.东 | KanjiTile.Kanji.南 | KanjiTile.Kanji.西 | KanjiTile.Kanji.北;
            int count = groups.PungList.Count(g => g.Key is KanjiTile t && (t.Value & check) != 0);

            if (count != 3)
            {
                return(false);
            }
            if (!(groups.Pair.Key is KanjiTile t2) || (t2.Value & check) == 0)
            {
                return(false);
            }
            result.Add(YakuValue.FromFullYaku(this, "小四喜", 1));
            return(true);
        }
コード例 #4
0
        protected override bool Test(ICollection <YakuValue> result, ITiles tiles, IGroups groups, YakuEnvironment env)
        {
            const KanjiTile.Kanji cmp = KanjiTile.Kanji.白 | KanjiTile.Kanji.发 | KanjiTile.Kanji.中;

            if (!(groups.Pair.Key is KanjiTile t) || (t.Value & cmp) == 0)
            {
                return(false);
            }
            int count = groups.PungList.Count(g => g.Key is KanjiTile t2 && (t2.Value & cmp) != 0);

            if (count < 2)
            {
                return(false);
            }
            result.Add(YakuValue.FromFanValue(this, "小三元", 2));
            return(true);
        }