Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        // -- 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);
        }