示例#1
0
        /// <summary>
        /// 将棋盤をコンソールへ出力するぜ☆(^▽^)
        /// 見出し無し☆(^~^)
        /// </summary>
        /// <returns></returns>
        public static void Setumei_Bitboards(Bitboard[] bbHairetu, StringBuilder syuturyoku)
        {
            Util_Information.AppendLine_Top_Kyokumen(bbHairetu.Length, syuturyoku);
            for (int dan = 0; dan < Option_Application.Optionlist.BanTateHaba; dan++)
            {
                AppendLine_Data(bbHairetu, dan * Option_Application.Optionlist.BanYokoHaba, syuturyoku);

                if (dan + 1 < Option_Application.Optionlist.BanTateHaba)
                {
                    AppendLine_Middle(bbHairetu.Length, syuturyoku);
                }
            }
            AppendLine_Bottom(bbHairetu.Length, syuturyoku);
        }
示例#2
0
        /// <summary>
        /// 駒の利き数☆(^~^)
        /// </summary>
        /// <returns></returns>
        public static void HyojiKomanoKikiSu(Shogiban shogiban, StringBuilder syuturyoku)
        {
            //, KikisuKomabetuCountboardItiran kikiKomabetuCB
            // KikisuZenbuCountboardItiran kikiZenbuCB

            syuturyoku.AppendLine("重ね利き数全部");
            // 対局者別 全部
            {
                // 見出し
                Setumei_Headers(Conv_Taikyokusya.NamaeItiran, syuturyoku);

                Util_Information.AppendLine_Top_Kyokumen(Conv_Taikyokusya.AllOptionalPhaseList.Length, syuturyoku); // ┌──┬──┬──┐みたいな線☆
                for (int dan = 0; dan < Option_Application.Optionlist.BanTateHaba; dan++)
                {
                    AppendLine_Data_Countboard(shogiban, dan * Option_Application.Optionlist.BanYokoHaba, syuturyoku);

                    if (dan + 1 < Option_Application.Optionlist.BanTateHaba)
                    {
                        Util_Information.AppendLine_Middle(Conv_Taikyokusya.AllOptionalPhaseList.Length, syuturyoku); // ├──┼──┼──┤みたいな線☆
                    }
                }
                Util_Information.AppendLine_Bottom(Conv_Taikyokusya.AllOptionalPhaseList.Length, syuturyoku); // └──┴──┴──┘みたいな線☆
            }
            // 駒別
            foreach (var optionalPhase29 in Conv_Taikyokusya.AllOptionalPhaseList) // 対局者1、対局者2
            {
                foreach (Koma km in Conv_Koma.ItiranTai[OptionalPhase.IndexOf(optionalPhase29)])
                {
                    syuturyoku.Append(Util_Information.FormatBanWidthZenkaku(Conv_Koma.GetName(km)));
                }
                syuturyoku.AppendLine();

                Util_Information.AppendLine_Top_Kyokumen(Conv_Komasyurui.Itiran.Length, syuturyoku);

                for (int dan = 0; dan < Option_Application.Optionlist.BanTateHaba; dan++)
                {
                    AppendLine_Data_Countboard(optionalPhase29, shogiban, dan * Option_Application.Optionlist.BanYokoHaba, syuturyoku);

                    if (dan + 1 < Option_Application.Optionlist.BanTateHaba)
                    {
                        Util_Information.AppendLine_Middle(Conv_Komasyurui.Itiran.Length, syuturyoku);
                    }
                }
                Util_Information.AppendLine_Bottom(Conv_Komasyurui.Itiran.Length, syuturyoku);
            }
        }
示例#3
0
        /// <summary>
        /// 将棋盤をコンソールへ出力するぜ☆(^▽^)
        /// 見出し有り
        /// </summary>
        /// <returns></returns>
        public static void Setumei_Bitboards(string[] headers, Bitboard[] bbHairetu, StringBuilder syuturyoku)
        {
            Debug.Assert(0 < bbHairetu.Length && null != bbHairetu[0], "");

            // 見出し
            Setumei_Headers(headers, syuturyoku);

            // 盤上
            Util_Information.AppendLine_Top_Kyokumen(bbHairetu.Length, syuturyoku);
            for (int dan = 0; dan < Option_Application.Optionlist.BanTateHaba; dan++)
            {
                AppendLine_Data(bbHairetu, dan * Option_Application.Optionlist.BanYokoHaba, syuturyoku);

                if (dan + 1 < Option_Application.Optionlist.BanTateHaba)
                {
                    AppendLine_Middle(bbHairetu.Length, syuturyoku);
                }
            }
            AppendLine_Bottom(bbHairetu.Length, syuturyoku);
        }
示例#4
0
        //private static Option<T> Option<T>(T white)
        //{
        //    throw new NotImplementedException();
        //}

        /// <summary>
        /// 将棋盤をコンソールへ出力するぜ☆(^▽^)
        /// コンソールでゲームするのに向いた表示☆
        /// </summary>
        /// <returns></returns>
        public static void Setumei_NingenGameYo(Kyokumen ky, StringBuilder syuturyoku)
        {
            // 1行目
            {
                // 千日手
                int sennitite = ky.Konoteme.GetSennititeCount();
                if (Const_Game.SENNITITE_COUNT == sennitite)
                {
                    Conv_Taikyokusya.Setumei_Name(Conv_Taikyokusya.Reverse(ky.CurrentOptionalPhase), syuturyoku);
                    syuturyoku.Append("の着手にて 千日手");
                    syuturyoku.AppendLine();
                }
                else if (1 < sennitite)
                {
                    syuturyoku.Append("同一局面反復 ");
                    syuturyoku.Append(sennitite.ToString());
                    syuturyoku.AppendLine(" 回目");
                }
                else
                {
                    syuturyoku.AppendLine();
                }
            }

            // 2行目
            {
                // 何手目
                syuturyoku.Append("図は");
                syuturyoku.Append(string.Format("{0,3}", ky.Konoteme.ScanNantemadeBango()));
                syuturyoku.Append("手まで ");

                // 手番
                Conv_Taikyokusya.Setumei_Name(ky.CurrentOptionalPhase, syuturyoku);
                syuturyoku.Append("の番");

                // #仲ルール
                if (Option_Application.Optionlist.SagareruHiyoko)
                {
                    syuturyoku.Append(" #仲");
                }

                syuturyoku.AppendLine();
            }

            // 3行目 後手の持ち駒の数
            {
                foreach (MotiKomasyurui mks in Conv_MotiKomasyurui.Itiran)
                {
                    MotiKoma mk = Med_Koma.MotiKomasyuruiAndPhaseToMotiKoma(mks, OptionalPhase.White);
                    if (ky.MotiKomas.HasMotiKoma(mk))
                    {
                        syuturyoku.Append(Conv_MotiKomasyurui.GetHyojiName(mks)); syuturyoku.Append(ky.MotiKomas.Get(mk).ToString());
                    }
                }
                syuturyoku.AppendLine();
            }

            // 4行目
            {
                syuturyoku.Append("  ");
                AppendLine_SujiFugo_Kyokumen(syuturyoku);
                //syuturyoku.AppendLine("   A   B   C  ");
            }

            // 5行目~13行目
            // 盤上
            {
                // 5行目
                syuturyoku.Append("  ");
                Util_Information.AppendLine_Top_Kyokumen(1, syuturyoku); // ┌──┬──┬──┐

                for (int dan = 0; dan < Option_Application.Optionlist.BanTateHaba; dan++)
                {
                    // 6,8,10,12行目
                    syuturyoku.Append(Conv_Kihon.ToZenkakuInteger(dan + 1));
                    AppendLine_Data_Kyokumen(ky, dan, syuturyoku);

                    if (dan + 1 < Option_Application.Optionlist.BanTateHaba)
                    {
                        // 7,9,11行目
                        syuturyoku.Append("  ");
                        AppendLine_Middle(1, syuturyoku);//├──┼──┼──┤
                    }
                }

                // 13行目
                syuturyoku.Append("  ");
                AppendLine_Bottom(1, syuturyoku);//└──┴──┴──┘
            }

            // 14行目
            {
                // 先手の持ち駒の数
                foreach (MotiKomasyurui mks in Conv_MotiKomasyurui.Itiran)
                {
                    MotiKoma mk = Med_Koma.MotiKomasyuruiAndPhaseToMotiKoma(mks, OptionalPhase.Black);
                    if (ky.MotiKomas.HasMotiKoma(mk))
                    {
                        syuturyoku.Append(Conv_MotiKomasyurui.GetHyojiName(mks)); syuturyoku.Append(ky.MotiKomas.Get(mk).ToString());
                    }
                }
                syuturyoku.AppendLine();
            }
        }