/// <summary> /// 飜数、符、親・子のどちらかであるかで上がり点を計算する /// </summary> /// <param name="han">飜数</param> /// <param name="fu">符</param> /// <param name="type">親 or 子</param> /// <returns>上がり点</returns> public static int Ten(飜数 han, 符数 fu, 親子 type) { switch (type) { case 親子.親: return(OyaTen(han, fu)); case 親子.子: return(KoTen(han, fu)); } return(0); }
/// <summary> /// 飜数、符から親の上がり点を計算する /// </summary> /// <param name="han">飜数</param> /// <param name="fu">符</param> /// <returns>上がり点</returns> public static int OyaTen(飜数 han, 符数 fu) { int koTen = KoTen(han, fu); // 基本的に子の1.5倍だが、例外があるので、例外のみ直接指定し、それ以外は計算。 if (koTen == 2000) { return(2900); } if (koTen == 3900) { return(5800); } if (koTen == 5200) { return(7700); } return((int)(Math.Ceiling((koTen * 1.5) / 100) * 100)); }
/// <summary> /// 飜数、符から子の上がり点を計算する /// </summary> /// <param name="han">飜数</param> /// <param name="fu">符</param> /// <returns>上がり点</returns> public static int KoTen(飜数 han, 符数 fu) { switch (han) { case 飜数.一飜: switch (fu) { case 符数.符20: break; case 符数.符25: break; case 符数.符30: return(1000); case 符数.符40: return(1300); case 符数.符50: return(1600); case 符数.符60: return(2000); } break; case 飜数.二飜: switch (fu) { case 符数.符20: return(1300); case 符数.符25: return(1600); case 符数.符30: return(2000); case 符数.符40: return(2600); case 符数.符50: return(3200); case 符数.符60: return(3900); } break; case 飜数.飜: switch (fu) { case 符数.符20: return(2600); case 符数.符25: return(3200); case 符数.符30: return(3900); case 符数.符40: return(5200); case 符数.符50: return(6400); case 符数.符60: return(7700); } break; case 飜数.四飜: switch (fu) { case 符数.符20: return(5200); case 符数.符25: return(6400); case 符数.符30: return(7700); case 符数.符40: return(8000); case 符数.符50: return(8000); case 符数.符60: return(8000); } break; case 飜数.満貫: return(8000); case 飜数.跳満: return(12000); case 飜数.満: return(16000); case 飜数.満: return(24000); case 飜数.役満: return(32000); } return(0); }
/// <summary> /// 上がり点を計算する。(リー棒、つみ棒を含まない) /// </summary> /// <param name="han">飜数</param> /// <param name="fu">符数</param> /// <returns></returns> public static int AgariTen(飜数 han, 符数 fu, 親子 oyako) { return(AgaritenKeisan.Ten(han, fu, oyako)); }