/// <summary> /// ************************************************************************************************************************ /// 棋譜用の符号テキスト(*1)を作ります。 /// ************************************************************************************************************************ /// /// *1…「▲5五銀上」など。 /// /// “同”表記に「置き換えない」バージョンです。 /// /// </summary> /// <param name="move"></param> /// <param name="previousKomaP"></param> /// <returns></returns> public static string ToString_NoUseDou( JsaFugoImpl jsaFugo, RO_Starbeam move ) { StringBuilder sb = new StringBuilder(); RO_Star koma = Util_Starlightable.AsKoma(move.Now); sb.Append(Conv_Playerside.ToSankaku(koma.Pside)); //------------------------------ // “同”に変換せず、“筋・段”をそのまま出します。 //------------------------------ int suji; int dan; Util_MasuNum.TryMasuToSuji(koma.Masu, out suji); Util_MasuNum.TryMasuToDan(koma.Masu, out dan); sb.Append(Conv_Int.ToArabiaSuji(suji)); sb.Append(Conv_Int.ToKanSuji(dan)); //------------------------------ // “歩”とか。“全”ではなく“成銀” <符号用> //------------------------------ sb.Append(Util_Komasyurui14.Fugo[(int)jsaFugo.Syurui]); //------------------------------ // “右”とか //------------------------------ sb.Append(Conv_MigiHidari.ToStr(jsaFugo.MigiHidari)); //------------------------------ // “寄”とか //------------------------------ sb.Append(Conv_AgaruHiku.ToStr(jsaFugo.AgaruHiku)); //------------------------------ // “成”とか //------------------------------ sb.Append(Conv_NariNarazu.Nari_ToStr(jsaFugo.Nari)); //------------------------------ // “打”とか //------------------------------ sb.Append(Conv_DaHyoji.ToBool(jsaFugo.DaHyoji)); return(sb.ToString()); }
//------------------------------------------------------------ #endregion /// <summary> /// 「2八」といった表記にして返します。 /// /// Conv_SyElement使用。 /// </summary> /// <param name="masu"></param> /// <returns></returns> public static string ToSujiKanji(SyElement masu) { StringBuilder sb = new StringBuilder(); int suji; int dan; Util_MasuNum.TryMasuToSuji(masu, out suji); Util_MasuNum.TryMasuToDan(masu, out dan); sb.Append(Conv_Int.ToArabiaSuji(suji)); sb.Append(Conv_Int.ToKanSuji(dan)); return(sb.ToString()); }
/// <summary> /// ************************************************************************************************************************ /// 棋譜用の符号テキスト(*1)を作ります。 /// ************************************************************************************************************************ /// /// *1…「▲5五銀上」など。 /// /// </summary> /// <param name="douExpr">“同”表記に置き換えるなら真。</param> /// <param name="previousKomaP"></param> /// <returns></returns> public static string ToString_UseDou( JsaFugoImpl jsaFugo, Node <IMove, KyokumenWrapper> siteiNode ) { StringBuilder sb = new StringBuilder(); IMove curMove = siteiNode.Key; RO_Star curSrcKoma = Util_Starlightable.AsKoma(curMove.LongTimeAgo); RO_Star curDstKoma = Util_Starlightable.AsKoma(curMove.Now); sb.Append(Conv_Playerside.ToSankaku(curDstKoma.Pside)); //------------------------------ // “同”で表記できるところは、“同”で表記します。それ以外は“筋・段”で表記します。 //------------------------------ if (!siteiNode.IsRoot()) { IMove preMove = siteiNode.GetParentNode().Key; if (null != preMove) { //RO_Star_Koma preSrcKoma = Util_Starlightable.AsKoma(preMove.LongTimeAgo); RO_Star preDstKoma = Util_Starlightable.AsKoma(preMove.Now); if (Conv_SyElement.ToMasuNumber(preDstKoma.Masu) == Conv_SyElement.ToMasuNumber(curDstKoma.Masu)) { // “同” sb.Append("同"); goto gt_Next1; } } } { // “筋・段” int suji; int dan; Util_MasuNum.TryMasuToSuji(curDstKoma.Masu, out suji); Util_MasuNum.TryMasuToDan(curDstKoma.Masu, out dan); sb.Append(Conv_Int.ToArabiaSuji(suji)); sb.Append(Conv_Int.ToKanSuji(dan)); } gt_Next1: ; //------------------------------ // “歩”とか。“全”ではなく“成銀” <符号用> //------------------------------ sb.Append(Util_Komasyurui14.Fugo[(int)jsaFugo.Syurui]); //------------------------------ // “右”とか //------------------------------ sb.Append(Conv_MigiHidari.ToStr(jsaFugo.MigiHidari)); //------------------------------ // “寄”とか //------------------------------ sb.Append(Conv_AgaruHiku.ToStr(jsaFugo.AgaruHiku)); //------------------------------ // “成”とか //------------------------------ sb.Append(Conv_NariNarazu.Nari_ToStr(jsaFugo.Nari)); //------------------------------ // “打”とか //------------------------------ sb.Append(Conv_DaHyoji.ToBool(jsaFugo.DaHyoji)); return(sb.ToString()); }
/// <summary> /// デバッグ用文字列を作ります。 /// </summary> /// <param name="masus"></param> /// <param name="memo"></param> /// <returns></returns> public static string Log_Masus(SySet <SyElement> masus, string memo) { StringBuilder sb = new StringBuilder(); int errorCount = 0; // フォルスクリア bool[] ban81 = new bool[81]; // フラグ立て foreach (New_Basho basho in masus.Elements) { if (Okiba.ShogiBan == Conv_SyElement.ToOkiba(Masu_Honshogi.Masus_All[basho.MasuNumber])) { ban81[basho.MasuNumber] = true; } } sb.AppendLine("...(^▽^)さて、局面は☆?"); if (null != memo && "" != memo.Trim()) { sb.AppendLine(memo); } sb.AppendLine(" 9 8 7 6 5 4 3 2 1"); sb.AppendLine("┏━┯━┯━┯━┯━┯━┯━┯━┯━┓"); for (int dan = 1; dan <= 9; dan++) { sb.Append("┃"); for (int suji = 9; suji >= 1; suji--)// 筋は左右逆☆ { SyElement masu = Util_Masu10.OkibaSujiDanToMasu(Okiba.ShogiBan, suji, dan); if (Okiba.ShogiBan == Conv_SyElement.ToOkiba(masu)) { if (ban81[Conv_SyElement.ToMasuNumber(masu)]) { sb.Append("●"); } else { sb.Append(" "); } } else { errorCount++; sb.Append(" "); } if (suji == 1)//1筋が最後だぜ☆ { sb.Append("┃"); sb.AppendLine(Conv_Int.ToKanSuji(dan)); } else { sb.Append("│"); } } if (dan == 9) { sb.AppendLine("┗━┷━┷━┷━┷━┷━┷━┷━┷━┛"); } else { sb.AppendLine("┠─┼─┼─┼─┼─┼─┼─┼─┼─┨"); } } // 後手駒台 sb.Append("エラー数:"); sb.AppendLine(errorCount.ToString()); sb.AppendLine("...(^▽^)ドウダッタカナ~☆"); return(sb.ToString()); }