/// <summary> /// 局面文字列を書き出す /// フォーマットは引数のkfで指定する。 /// </summary> /// <param name="filename"></param> /// <param name="kf"></param> public string ToPositionString(KifuFileType kt) { string result = string.Empty; switch (kt) { // 局面出力の専用ルーチンを使用 case KifuFileType.KIF: case KifuFileType.KI2: result = ToKifPositionString(kt); break; case KifuFileType.SVG: result = ToSvgPositionString(); break; // 局面出力を用意していないものは、棋譜書き出しルーチンを流用して出力する default: var kifu = new KifuManager(); // 経路を消すためにsfen化して代入しなおして書き出す kifu.FromString($"sfen {Position.ToSfen()}"); kifu.KifuHeader.PlayerNameBlack = KifuHeader.PlayerNameBlack; kifu.KifuHeader.PlayerNameWhite = KifuHeader.PlayerNameWhite; result = kifu.ToString(kt); break; // ToDo : 他の形式もサポートする } return(result); }
/// <summary> /// 局面文字列を書き出す /// フォーマットは引数のkfで指定する。 /// </summary> /// <param name="filename"></param> /// <param name="kf"></param> public string ToPositionString(KifuFileType kt) { string result = string.Empty; switch (kt) { case KifuFileType.SVG: // SVG形式は専用ルーチンを使用 result = ToSvgString(); break; default: // SVG形式以外は、棋譜書き出しルーチンを流用して出力する var kifu = new KifuManager(); // 経路を消すためにsfen化して代入しなおして書き出す kifu.FromString($"sfen {Position.ToSfen()}"); kifu.KifuHeader.PlayerNameBlack = KifuHeader.PlayerNameBlack; kifu.KifuHeader.PlayerNameWhite = KifuHeader.PlayerNameWhite; result = kifu.ToString(kt); break; // ToDo : 他の形式もサポートする } return(result); }
// -- static method /// <summary> /// rootSfen(開始局面のsfen)とmoves(手順)を指定して、棋譜形式の文字列を得る。 /// /// エラーがあればnullが返る。 /// </summary> /// <param name="rootSfen"></param> /// <param name="moves"></param> /// <returns></returns> public static string ToStringFromRootSfenAndMoves(KifuFileType type, string rootSfen, List <Move> moves) { // 一度、sfenから生成するのがお手軽か? var kifuManager = new KifuManager(); var sfen = Core.Util.RootSfenAndMovesToUsiString(rootSfen, moves); var error = kifuManager.FromString(sfen); return(error == null?kifuManager.ToString(type) : null); }