Пример #1
0
        /// <summary>
        /// 駒別の居場所
        /// </summary>
        /// <param name="hyoji"></param>
        static void AppendKomaBetuIbashoTo(IbashoBan.YomiIbashoBan yomiIbashoBan, StringBuilder hyoji)
        {
            hyoji.AppendLine("駒別の居場所");
            foreach (Taikyokusya tai in Conv_Taikyokusya.itiran)// 対局者1、対局者2
            {
                // 駒別
                foreach (Piece km_tai in Conv_Koma.itiranTai[(int)tai])
                {
                    hyoji.Append(SpkBanWaku.CutHeaderBanWidthZenkaku(Conv_Koma.GetName(km_tai)));
                }
                hyoji.AppendLine();

                // 盤
                YomiBitboard[] bbHairetu = new YomiBitboard[Conv_Komasyurui.itiran.Length];
                int            i         = 0;
                foreach (Komasyurui ks in Conv_Komasyurui.itiran)
                {
                    bbHairetu[i] = yomiIbashoBan.GetKoma(Med_Koma.KomasyuruiAndTaikyokusyaToKoma(ks, tai));
                    i++;
                }
                SpkBan_MultiColumn.Setumei_Bitboard(null, bbHairetu,
                                                    " 〇 ", "  ",
                                                    hyoji);
            }
        }
Пример #2
0
        /// <summary>
        /// ビットボードを横に並べるぜ☆(^▽^)
        /// </summary>
        /// <param name="headers">見出しを使わない場合はヌル</param>
        /// <param name="yomiBbHairetu"></param>
        /// <param name="hyoji"></param>
        public static void Setumei_Bitboard(string[] headers, YomiBitboard[] yomiBbHairetu, string yes, string no, StringBuilder hyoji)
        {
            Debug.Assert(0 < yomiBbHairetu.Length && null != yomiBbHairetu[0], "");

            // 見出し
            if (null != headers)
            {
                SpkBanWaku.Setumei_Headers(headers, hyoji);
            }

            // 盤上
            SpkBanWaku.AppendLine_TopBar(yomiBbHairetu.Length, PureSettei.banYokoHaba, hyoji);
            for (int dan = 0; dan < PureSettei.banTateHaba; dan++)
            {
                SpkBanWaku.AppendLine_MultiTableRecord_Cell4Hankakus4(
                    (int iTable, Masu ms) =>
                {
                    return(yomiBbHairetu[iTable].IsOn(ms) ? yes : no);    // " 〇 " : "  ";
                },
                    yomiBbHairetu, dan, hyoji);

                if (dan + 1 < PureSettei.banTateHaba)
                {
                    SpkBanWaku.AppendLine_MiddleBar(yomiBbHairetu.Length, PureSettei.banYokoHaba, hyoji);
                }
            }
            SpkBanWaku.AppendLine_BottomBar(yomiBbHairetu.Length, PureSettei.banYokoHaba, hyoji);
        }
Пример #3
0
        /// <summary>
        /// ビットボードをコンソールへ出力するぜ☆(^▽^)
        /// </summary>
        /// <returns></returns>
        public static void Setumei_Bitboard(string[] headers, Bitboard[] bbHairetu, StringBuilder hyoji)
        {
            // 見出し
            if (null != headers)
            {
                SpkBanWaku.Setumei_Headers(headers, hyoji);
            }

            SpkBanWaku.AppendLine_TopBar(bbHairetu.Length, PureSettei.banYokoHaba, hyoji);
            for (int dan = 0; dan < PureSettei.banTateHaba; dan++)
            {
                SpkBanWaku.AppendLine_MultiTableRecord_Cell4Hankakus4(
                    (int iTable, Masu ms) =>
                {
                    return(bbHairetu[iTable].IsOn(ms) ? " 〇 " : "  ");
                },
                    bbHairetu, dan, hyoji);

                if (dan + 1 < PureSettei.banTateHaba)
                {
                    SpkBanWaku.AppendLine_MiddleBar(bbHairetu.Length, PureSettei.banYokoHaba, hyoji);
                }
            }
            SpkBanWaku.AppendLine_BottomBar(bbHairetu.Length, PureSettei.banYokoHaba, hyoji);
        }
Пример #4
0
        /// <summary>
        /// 駒の利き数☆(^~^)
        /// 対局者別と、駒別
        /// </summary>
        /// <returns></returns>
        public static void HyojiKomanoKikiSu(KikiBan.YomiKikiBan yomiKikiBan, StringBuilder hyoji)
        {
            hyoji.AppendLine("重ね利き数全部");
            hyoji.AppendLine(string.Format("差分更新トータル ▲{0} △{1}", yomiKikiBan.CountKikisuTotalZenbu(Taikyokusya.T1), yomiKikiBan.CountKikisuTotalZenbu(Taikyokusya.T2)));
            // 対局者別 全部
            {
                // 見出し
                SpkBanWaku.Setumei_Headers(Conv_Taikyokusya.namaeItiran, hyoji);

                SpkBanWaku.AppendLine_TopBar(Conv_Taikyokusya.itiran.Length, PureSettei.banYokoHaba, hyoji); // ┌──┬──┬──┐みたいな線☆
                for (int dan = 0; dan < PureSettei.banTateHaba; dan++)
                {
                    // データ表示
                    SpkBanWaku.AppendLine_Record_Cell4Hankakus1(
                        (Taikyokusya tai, Masu ms) =>
                    {
                        int kikisuZenbu = yomiKikiBan.CountKikisuZenbu(tai, ms);
                        return(0 < kikisuZenbu ? string.Format(" {0,2} ", kikisuZenbu) : "  ");
                    },
                        dan,
                        hyoji
                        );

                    if (dan + 1 < PureSettei.banTateHaba)
                    {
                        SpkBanWaku.AppendLine_MiddleBar(Conv_Taikyokusya.itiran.Length, PureSettei.banYokoHaba, hyoji); // ├──┼──┼──┤みたいな線☆
                    }
                }
                SpkBanWaku.AppendLine_BottomBar(Conv_Taikyokusya.itiran.Length, PureSettei.banYokoHaba, hyoji); // └──┴──┴──┘みたいな線☆
            }
            // 駒別
            foreach (Taikyokusya tai in Conv_Taikyokusya.itiran) // 対局者1、対局者2
            {
                foreach (Piece km_tai in Conv_Koma.itiranTai[(int)tai])
                {
                    hyoji.Append(SpkBanWaku.CutHeaderBanWidthZenkaku(Conv_Koma.GetName(km_tai)));
                }
                hyoji.AppendLine();

                SpkBanWaku.AppendLine_TopBar(Conv_Komasyurui.itiran.Length, PureSettei.banYokoHaba, hyoji);

                for (int dan = 0; dan < PureSettei.banTateHaba; dan++)
                {
                    SpkBanWaku.AppendLine_Record_Cell4Hankakus3(
                        (Taikyokusya tai1, Komasyurui ks, Masu ms) => {
                        int kikisuKomabetu = yomiKikiBan.CountKikisuKomabetu(Med_Koma.KomasyuruiAndTaikyokusyaToKoma(ks, tai1), ms);
                        return(0 < kikisuKomabetu ? string.Format(" {0,2} ", kikisuKomabetu) : "  ");
                    },
                        tai, dan, hyoji);

                    if (dan + 1 < PureSettei.banTateHaba)
                    {
                        SpkBanWaku.AppendLine_MiddleBar(Conv_Komasyurui.itiran.Length, PureSettei.banYokoHaba, hyoji);
                    }
                }
                SpkBanWaku.AppendLine_BottomBar(Conv_Komasyurui.itiran.Length, PureSettei.banYokoHaba, hyoji);
            }
        }
Пример #5
0
        /// <summary>
        /// お邪魔ボードを横に並べるぜ☆(^▽^)
        /// 見出し有り
        /// </summary>
        /// <returns></returns>
        public static void Setumei_MasuHyo(
            string[] headers, Masu[][] masuHyoHairetu, bool yokoTateHanten, StringBuilder hyoji)
        {
            Debug.Assert(0 < masuHyoHairetu.Length, "");
            int banYokoHaba_tmp;
            int banTateHaba_tmp;

            if (yokoTateHanten)
            {
                banYokoHaba_tmp = PureSettei.banTateHaba;
                banTateHaba_tmp = PureSettei.banYokoHaba;
            }
            else
            {
                banYokoHaba_tmp = PureSettei.banYokoHaba;
                banTateHaba_tmp = PureSettei.banTateHaba;
            }

            // 見出し
            SpkBanWaku.Setumei_Headers(headers, hyoji);

            // 盤上
            SpkBanWaku.AppendLine_TopBar(masuHyoHairetu.Length, banYokoHaba_tmp, hyoji);
            for (int dan = 0; dan < banTateHaba_tmp; dan++)
            {
                SpkBanWaku.AppendLine_MultiTableRecord_Cell4Hankakus5(
                    (Masu[] masuHyo, Masu ms) =>
                {
                    return(string.Format(" {0,2} ", masuHyo[(int)ms]));
                },
                    masuHyoHairetu, dan, banYokoHaba_tmp, hyoji);

                if (dan + 1 < banTateHaba_tmp)
                {
                    SpkBanWaku.AppendLine_MiddleBar(masuHyoHairetu.Length, banYokoHaba_tmp, hyoji);
                }
            }
            SpkBanWaku.AppendLine_BottomBar(masuHyoHairetu.Length, banYokoHaba_tmp, hyoji);
        }
Пример #6
0
        /// <summary>
        /// 汎用
        /// </summary>
        /// <returns></returns>
        static void Setumei_Hanyo(
            DLGT_dataBu dlgt_dataBu,
            int banYokoHaba_tmp,
            int banTateHaba_tmp,
            int teme,
            StringBuilder hyoji
            )
        {
            #region 盤の上の方
            // 2行目
            {
                // 何手目
                hyoji.Append(string.Format("図は{0,3}手まで ", teme));

                // 手番
                SpkTaikyokusya.AppendSetumeiName(PureMemory.GetTebanByTeme(teme), hyoji);
                hyoji.Append("の番");

                hyoji.AppendLine();
            }

            // 3行目 後手の持ち駒
            {
                // 後手の持ち駒の数
                foreach (MotigomaSyurui mks in Conv_MotigomaSyurui.itiran)
                {
                    Motigoma mk = Med_Koma.MotiKomasyuruiAndTaikyokusyaToMotiKoma(mks, Taikyokusya.T2);
                    if (PureMemory.gky_ky.yomiKy.yomiMotigomaItiran.HasMotigoma(mk))
                    {
                        hyoji.Append(Conv_MotigomaSyurui.GetHyojiName(mks)); hyoji.Append(PureMemory.gky_ky.yomiKy.yomiMotigomaItiran.Count(mk).ToString());
                    }
                }
                hyoji.AppendLine();
            }

            // 4行目
            {
                // A B C D とか
                hyoji.Append("  ");
                SpkBanWaku.AppendLine_SujiFugo(banYokoHaba_tmp, hyoji);
            }

            // 5行目
            {
                hyoji.Append("  ");
                SpkBanWaku.AppendLine_TopBar(1, PureSettei.banYokoHaba, hyoji); // ┌──┬──┬──┐
            }
            #endregion

            // 5行目~13行目
            // 盤上
            for (int dan = 0; dan < PureSettei.banTateHaba; dan++)
            {
                // 6,8,10,12行目
                hyoji.Append(Conv_Kihon.ToZenkakuInteger(dan + 1));

                SpkBanWaku.AppendLine_Record_Cell4Hankakus2(
                    (Masu ms) => {
                    return(dlgt_dataBu(dan, ms));
                },
                    dan, banYokoHaba_tmp, hyoji);

                if (dan + 1 < PureSettei.banTateHaba)
                {
                    // 7,9,11行目
                    hyoji.Append("  ");
                    SpkBanWaku.AppendLine_MiddleBar(1, PureSettei.banYokoHaba, hyoji);//├──┼──┼──┤
                }
            }

            #region 盤の下の方
            // 13行目
            {
                hyoji.Append("  ");
                SpkBanWaku.AppendLine_BottomBar(1, PureSettei.banYokoHaba, hyoji);//└──┴──┴──┘
            }

            // 先手の持ち駒の数
            {
                foreach (MotigomaSyurui mks in Conv_MotigomaSyurui.itiran)
                {
                    Motigoma mk = Med_Koma.MotiKomasyuruiAndTaikyokusyaToMotiKoma(mks, Taikyokusya.T1);
                    if (PureMemory.gky_ky.yomiKy.yomiMotigomaItiran.HasMotigoma(mk))
                    {
                        hyoji.Append(Conv_MotigomaSyurui.GetHyojiName(mks)); hyoji.Append(PureMemory.gky_ky.yomiKy.yomiMotigomaItiran.Count(mk).ToString());
                    }
                }
                hyoji.AppendLine();
            }
            #endregion
        }