/// <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); }
/// <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); } }
/// <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); }
//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(); } }