Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
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));
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
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));
 }