public static PointResult AnalyzePoint(YakuResult yakuResult) { PointResult pointResult = new PointResult(); int bp = calcBasicPoint(yakuResult.Fu, yakuResult.Han, yakuResult.IsYakuman); if (yakuResult.IsTsumo) {//tsumo if (yakuResult.IsOya) { pointResult.ChildOutcome = ceilAt100(bp * 2); pointResult.HoraPlayerIncome = pointResult.ChildOutcome * 3; } else { pointResult.ChildOutcome = ceilAt100(bp); pointResult.OyaOutcome = ceilAt100(bp * 2); pointResult.HoraPlayerIncome = pointResult.ChildOutcome * 2 + pointResult. OyaOutcome; } } else {//ron if (yakuResult.IsOya) { pointResult.HoraPlayerIncome = ceilAt100(bp * 6); } else { pointResult.HoraPlayerIncome = ceilAt100(bp * 4); } } return pointResult; }
public static PointResult AnalyzePoint(YakuResult yakuResult) { PointResult pointResult = new PointResult(); int bp = calcBasicPoint(yakuResult.Fu, yakuResult.Han, yakuResult.IsYakuman); if (yakuResult.IsTsumo) {//tsumo if (yakuResult.IsOya) { pointResult.ChildOutcome = ceilAt100(bp * 2); pointResult.HoraPlayerIncome = pointResult.ChildOutcome * 3; } else { pointResult.ChildOutcome = ceilAt100(bp); pointResult.OyaOutcome = ceilAt100(bp * 2); pointResult.HoraPlayerIncome = pointResult.ChildOutcome * 2 + pointResult.OyaOutcome; } } else {//ron if (yakuResult.IsOya) { pointResult.HoraPlayerIncome = ceilAt100(bp * 6); } else { pointResult.HoraPlayerIncome = ceilAt100(bp * 4); } } return(pointResult); }
private static int CalcHanSum(YakuResult result) { var hanSum = 0; foreach (var yaku in result.yakus) { hanSum += yaku.Value; } return(hanSum); }
public static YakuResult CalcSpecialYaku(InfoForResult ifr, Field field, int[] horaSyu) { YakuResult result = new YakuResult(); result.Fu = 25;//国士無双の場合は符を考慮しなくてよいため七対子の符に設定 result.IsTsumo = ifr.IsTsumo; result.IsOya = ifr.IsOya; //役の文字列取得 var yakuString = MJUtil.YAKU_STRING; //飜数の辞書選択 var yakuHanNum = ifr.IsMenzen ? MJUtil.YAKU_HAN_MENZEN : MJUtil.YAKU_HAN_FUROED; //七対子をあらかじめセット //国士無双の場合はSelectYakumanで七対子が消えるため初期段階でセットして問題ない result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHITOITSU], yakuHanNum[(int)MJUtil.Yaku.CHITOITSU]); if (ifr.IsDoubleReach) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DOUBLEREACH], yakuHanNum[(int)MJUtil.Yaku.DOUBLEREACH]); } else if (ifr.IsReach) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.REACH], yakuHanNum[(int)MJUtil.Yaku.REACH]); } if (ifr.IsTsumo && ifr.IsMenzen) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TSUMO], yakuHanNum[(int)MJUtil.Yaku.TSUMO]); } if (ifr.IsIppatsu) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.IPPATSU], yakuHanNum[(int)MJUtil.Yaku.IPPATSU]); } if (IsDora(ifr,horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DORA], CalcDoraNum(ifr, horaSyu)); } if (IsChinnitsu(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHINNITSU], yakuHanNum[(int)MJUtil.Yaku.CHINNITSU]); } if (IsHonnitsu(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HONNITSU], yakuHanNum[(int)MJUtil.Yaku.HONNITSU]); } if (IsTannyao(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TANNYAO], yakuHanNum[(int)MJUtil.Yaku.TANNYAO]); } if (IsHonroto(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HONROTO], yakuHanNum[(int)MJUtil.Yaku.HONROTO]); } if (ifr.IsHoutei) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HOUTEI], yakuHanNum[(int)MJUtil.Yaku.HOUTEI]); } if (ifr.IsHaitei) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HAITEI], yakuHanNum[(int)MJUtil.Yaku.HAITEI]); } if (ifr.IsChankan) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHANKAN], yakuHanNum[(int)MJUtil.Yaku.CHANKAN]); } if (IsTenho(ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TENHO], yakuHanNum[(int)MJUtil.Yaku.TENHO]); } if (IsChiho(ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHIHO], yakuHanNum[(int)MJUtil.Yaku.CHIHO]); } if (IsTsuiso(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TSUISO], yakuHanNum[(int)MJUtil.Yaku.TSUISO]); } if (HasYakuman(result.yakus)) { result.yakus = SelectYakuman(result.yakus); } return result; }
public static YakuResult CalcNormalYaku(HoraPattern horaMentsu, InfoForResult ifr, Field field,int[] horaSyu) { YakuResult result = new YakuResult(); result.Fu = CalcFu(horaMentsu, field, ifr); result.IsTsumo = ifr.IsTsumo; result.IsOya = ifr.IsOya; //役の文字列取得 var yakuString = MJUtil.YAKU_STRING; //飜数の辞書選択 var yakuHanNum = ifr.IsMenzen ? MJUtil.YAKU_HAN_MENZEN : MJUtil.YAKU_HAN_FUROED; if (ifr.IsDoubleReach) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DOUBLEREACH], yakuHanNum[(int)MJUtil.Yaku.DOUBLEREACH]); } else if (ifr.IsReach) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.REACH], yakuHanNum[(int)MJUtil.Yaku.REACH]); } if (ifr.IsTsumo && ifr.IsMenzen) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TSUMO], yakuHanNum[(int)MJUtil.Yaku.TSUMO]); } if (ifr.IsIppatsu) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.IPPATSU], yakuHanNum[(int)MJUtil.Yaku.IPPATSU]); } if (IsPinfu(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.PINFU], yakuHanNum[(int)MJUtil.Yaku.PINFU]); result.Fu = ifr.IsTsumo ? 20 : 30;//ピンフツモは20符、ピンフロンは30符 } if (IsTannyao(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TANNYAO], yakuHanNum[(int)MJUtil.Yaku.TANNYAO]); } //一盃口と二盃口は両立しない if (IsRyanpeiko(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.RYANPEIKO], yakuHanNum[(int)MJUtil.Yaku.RYANPEIKO]); } else if (IsIipeiko(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.IIPEIKOU], yakuHanNum[(int)MJUtil.Yaku.IIPEIKOU]); } if (IsYakuhai(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.YAKUHAI], CalcYakuhaiNum(horaMentsu, ifr)); } if (ifr.IsHoutei) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HOUTEI], yakuHanNum[(int)MJUtil.Yaku.HOUTEI]); } if (ifr.IsHaitei) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HAITEI], yakuHanNum[(int)MJUtil.Yaku.HAITEI]); } if (ifr.IsRinshan) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.RINSHAN], yakuHanNum[(int)MJUtil.Yaku.RINSHAN]); } if (ifr.IsChankan) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHANKAN], yakuHanNum[(int)MJUtil.Yaku.CHANKAN]); } if (IsDora(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DORA], CalcDoraNum(horaMentsu, ifr)); } if (IsSansyokuDoujun(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SANSYOKUDOJUN], yakuHanNum[(int)MJUtil.Yaku.SANSYOKUDOJUN]); } if (IsIttsuu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.ITTSUU], yakuHanNum[(int)MJUtil.Yaku.ITTSUU]); } if (IsSananko(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SANANKO], yakuHanNum[(int)MJUtil.Yaku.SANANKO]); } if (IsToitoi(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TOITOI], yakuHanNum[(int)MJUtil.Yaku.TOITOI]); } if (IsShosangen(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SHOSANGEN], yakuHanNum[(int)MJUtil.Yaku.SHOSANGEN]); } //混老頭とチャンタ系は同時に成立しないためif elseで判定する if (IsHonroto(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HONROTO], yakuHanNum[(int)MJUtil.Yaku.HONROTO]); } else { if (IsChanta(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHANTA], yakuHanNum[(int)MJUtil.Yaku.CHANTA]); } if (IsJunChanta(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.JUNCHANTA], yakuHanNum[(int)MJUtil.Yaku.JUNCHANTA]); } } if (IsSansyokuDoko(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SANSYOKUDOKO], yakuHanNum[(int)MJUtil.Yaku.SANSYOKUDOKO]); } if (IsSankantsu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SANKANTSU], yakuHanNum[(int)MJUtil.Yaku.SANKANTSU]); } //混一色と清一色は同時に成立しないためif elseで判定する if (IsHonnitsu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HONNITSU], yakuHanNum[(int)MJUtil.Yaku.HONNITSU]); } else if (IsChinnitsu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHINNITSU], yakuHanNum[(int)MJUtil.Yaku.CHINNITSU]); } //ここから役満 if(IsSuuanko(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SUUANKO], yakuHanNum[(int)MJUtil.Yaku.SUUANKO]); } if (IsDaisangen(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DAISANGEN], yakuHanNum[(int)MJUtil.Yaku.DAISANGEN]); } if (IsShosushi(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SHOSUSHI], yakuHanNum[(int)MJUtil.Yaku.SHOSUSHI]); } if (IsDaisushi(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DAISUSHI], yakuHanNum[(int)MJUtil.Yaku.DAISUSHI]); } if(IsTsuiso(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TSUISO], yakuHanNum[(int)MJUtil.Yaku.TSUISO]); } if (IsRyuiso(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.RYUISO], yakuHanNum[(int)MJUtil.Yaku.RYUISO]); } if (IsChinroto(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHINROTO], yakuHanNum[(int)MJUtil.Yaku.CHINROTO]); } if(IsChurenpoto(ifr,horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHURENPOTO], yakuHanNum[(int)MJUtil.Yaku.CHURENPOTO]); } if (IsSukantsu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SUKANTSU], yakuHanNum[(int)MJUtil.Yaku.SUKANTSU]); } if (IsTenho(ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TENHO], yakuHanNum[(int)MJUtil.Yaku.TENHO]); } if( IsChiho(ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHIHO], yakuHanNum[(int)MJUtil.Yaku.CHIHO]); } if (HasYakuman(result.yakus)) { result.yakus = SelectYakuman(result.yakus); result.IsYakuman = true; } //飜数計算 result.Han = CalcHanSum(result); return result; }
private static int CalcHanSum(YakuResult result) { var hanSum = 0; foreach( var yaku in result.yakus) { hanSum += yaku.Value; } return hanSum; }
public static YakuResult CalcSpecialYaku(InfoForResult ifr, Field field, int[] horaSyu) { YakuResult result = new YakuResult(); result.Fu = 25;//国士無双の場合は符を考慮しなくてよいため七対子の符に設定 result.IsTsumo = ifr.IsTsumo; result.IsOya = ifr.IsOya; //役の文字列取得 var yakuString = MJUtil.YAKU_STRING; //飜数の辞書選択 var yakuHanNum = ifr.IsMenzen ? MJUtil.YAKU_HAN_MENZEN : MJUtil.YAKU_HAN_FUROED; //七対子をあらかじめセット //国士無双の場合はSelectYakumanで七対子が消えるため初期段階でセットして問題ない result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHITOITSU], yakuHanNum[(int)MJUtil.Yaku.CHITOITSU]); if (ifr.IsDoubleReach) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DOUBLEREACH], yakuHanNum[(int)MJUtil.Yaku.DOUBLEREACH]); } else if (ifr.IsReach) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.REACH], yakuHanNum[(int)MJUtil.Yaku.REACH]); } if (ifr.IsTsumo && ifr.IsMenzen) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TSUMO], yakuHanNum[(int)MJUtil.Yaku.TSUMO]); } if (ifr.IsIppatsu) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.IPPATSU], yakuHanNum[(int)MJUtil.Yaku.IPPATSU]); } if (IsDora(ifr, horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DORA], CalcDoraNum(ifr, horaSyu)); } if (IsChinnitsu(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHINNITSU], yakuHanNum[(int)MJUtil.Yaku.CHINNITSU]); } if (IsHonnitsu(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HONNITSU], yakuHanNum[(int)MJUtil.Yaku.HONNITSU]); } if (IsTannyao(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TANNYAO], yakuHanNum[(int)MJUtil.Yaku.TANNYAO]); } if (IsHonroto(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HONROTO], yakuHanNum[(int)MJUtil.Yaku.HONROTO]); } if (ifr.IsHoutei) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HOUTEI], yakuHanNum[(int)MJUtil.Yaku.HOUTEI]); } if (ifr.IsHaitei) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HAITEI], yakuHanNum[(int)MJUtil.Yaku.HAITEI]); } if (ifr.IsChankan) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHANKAN], yakuHanNum[(int)MJUtil.Yaku.CHANKAN]); } if (IsTenho(ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TENHO], yakuHanNum[(int)MJUtil.Yaku.TENHO]); } if (IsChiho(ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHIHO], yakuHanNum[(int)MJUtil.Yaku.CHIHO]); } if (IsTsuiso(horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TSUISO], yakuHanNum[(int)MJUtil.Yaku.TSUISO]); } if (HasYakuman(result.yakus)) { result.yakus = SelectYakuman(result.yakus); } return(result); }
public static YakuResult CalcNormalYaku(HoraPattern horaMentsu, InfoForResult ifr, Field field, int[] horaSyu) { YakuResult result = new YakuResult(); result.Fu = CalcFu(horaMentsu, field, ifr); result.IsTsumo = ifr.IsTsumo; result.IsOya = ifr.IsOya; //役の文字列取得 var yakuString = MJUtil.YAKU_STRING; //飜数の辞書選択 var yakuHanNum = ifr.IsMenzen ? MJUtil.YAKU_HAN_MENZEN : MJUtil.YAKU_HAN_FUROED; if (ifr.IsDoubleReach) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DOUBLEREACH], yakuHanNum[(int)MJUtil.Yaku.DOUBLEREACH]); } else if (ifr.IsReach) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.REACH], yakuHanNum[(int)MJUtil.Yaku.REACH]); } if (ifr.IsTsumo && ifr.IsMenzen) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TSUMO], yakuHanNum[(int)MJUtil.Yaku.TSUMO]); } if (ifr.IsIppatsu) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.IPPATSU], yakuHanNum[(int)MJUtil.Yaku.IPPATSU]); } if (IsPinfu(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.PINFU], yakuHanNum[(int)MJUtil.Yaku.PINFU]); result.Fu = ifr.IsTsumo ? 20 : 30;//ピンフツモは20符、ピンフロンは30符 } if (IsTannyao(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TANNYAO], yakuHanNum[(int)MJUtil.Yaku.TANNYAO]); } //一盃口と二盃口は両立しない if (IsRyanpeiko(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.RYANPEIKO], yakuHanNum[(int)MJUtil.Yaku.RYANPEIKO]); } else if (IsIipeiko(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.IIPEIKOU], yakuHanNum[(int)MJUtil.Yaku.IIPEIKOU]); } if (IsYakuhai(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.YAKUHAI], CalcYakuhaiNum(horaMentsu, ifr)); } if (ifr.IsHoutei) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HOUTEI], yakuHanNum[(int)MJUtil.Yaku.HOUTEI]); } if (ifr.IsHaitei) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HAITEI], yakuHanNum[(int)MJUtil.Yaku.HAITEI]); } if (ifr.IsRinshan) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.RINSHAN], yakuHanNum[(int)MJUtil.Yaku.RINSHAN]); } if (ifr.IsChankan) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHANKAN], yakuHanNum[(int)MJUtil.Yaku.CHANKAN]); } if (IsDora(horaMentsu, ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DORA], CalcDoraNum(horaMentsu, ifr)); } if (IsSansyokuDoujun(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SANSYOKUDOJUN], yakuHanNum[(int)MJUtil.Yaku.SANSYOKUDOJUN]); } if (IsIttsuu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.ITTSUU], yakuHanNum[(int)MJUtil.Yaku.ITTSUU]); } if (IsSananko(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SANANKO], yakuHanNum[(int)MJUtil.Yaku.SANANKO]); } if (IsToitoi(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TOITOI], yakuHanNum[(int)MJUtil.Yaku.TOITOI]); } if (IsShosangen(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SHOSANGEN], yakuHanNum[(int)MJUtil.Yaku.SHOSANGEN]); } //混老頭とチャンタ系は同時に成立しないためif elseで判定する if (IsHonroto(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HONROTO], yakuHanNum[(int)MJUtil.Yaku.HONROTO]); } else { if (IsChanta(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHANTA], yakuHanNum[(int)MJUtil.Yaku.CHANTA]); } if (IsJunChanta(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.JUNCHANTA], yakuHanNum[(int)MJUtil.Yaku.JUNCHANTA]); } } if (IsSansyokuDoko(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SANSYOKUDOKO], yakuHanNum[(int)MJUtil.Yaku.SANSYOKUDOKO]); } if (IsSankantsu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SANKANTSU], yakuHanNum[(int)MJUtil.Yaku.SANKANTSU]); } //混一色と清一色は同時に成立しないためif elseで判定する if (IsHonnitsu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.HONNITSU], yakuHanNum[(int)MJUtil.Yaku.HONNITSU]); } else if (IsChinnitsu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHINNITSU], yakuHanNum[(int)MJUtil.Yaku.CHINNITSU]); } //ここから役満 if (IsSuuanko(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SUUANKO], yakuHanNum[(int)MJUtil.Yaku.SUUANKO]); } if (IsDaisangen(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DAISANGEN], yakuHanNum[(int)MJUtil.Yaku.DAISANGEN]); } if (IsShosushi(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SHOSUSHI], yakuHanNum[(int)MJUtil.Yaku.SHOSUSHI]); } if (IsDaisushi(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.DAISUSHI], yakuHanNum[(int)MJUtil.Yaku.DAISUSHI]); } if (IsTsuiso(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TSUISO], yakuHanNum[(int)MJUtil.Yaku.TSUISO]); } if (IsRyuiso(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.RYUISO], yakuHanNum[(int)MJUtil.Yaku.RYUISO]); } if (IsChinroto(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHINROTO], yakuHanNum[(int)MJUtil.Yaku.CHINROTO]); } if (IsChurenpoto(ifr, horaSyu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHURENPOTO], yakuHanNum[(int)MJUtil.Yaku.CHURENPOTO]); } if (IsSukantsu(horaMentsu)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.SUKANTSU], yakuHanNum[(int)MJUtil.Yaku.SUKANTSU]); } if (IsTenho(ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.TENHO], yakuHanNum[(int)MJUtil.Yaku.TENHO]); } if (IsChiho(ifr)) { result.yakus.Add(yakuString[(int)MJUtil.Yaku.CHIHO], yakuHanNum[(int)MJUtil.Yaku.CHIHO]); } if (HasYakuman(result.yakus)) { result.yakus = SelectYakuman(result.yakus); result.IsYakuman = true; } //飜数計算 result.Han = CalcHanSum(result); return(result); }