예제 #1
0
        /// <summary>
        /// 指定の手目まで進めるぜ☆(^~^)
        /// </summary>
        /// <param name="temeMade"></param>
        /// <param name="ky2"></param>
        /// <param name="hyoji"></param>
        public static bool Try_GoToTememade(FenSyurui f, int temeMade, StringBuilder hyoji)
        {
            // 棋譜を元に、局面データを再現するぜ☆

            int    caret = 0;
            string moves_notUse;

            // 初期局面のセット☆(^~^)
            if (LisGenkyoku.TryFail_MatchPositionvalue(f, PureMemory.kifu_syokiKyokumenFen, ref caret, out moves_notUse
#if DEBUG
                                                       , (IDebugMojiretu)hyoji
#endif
                                                       ))
            {
                return(false);
            }
            // 指定の手目まで進めるぜ☆(^~^)
            MoveGenAccessor.ScanKifu_0ToPreTeme((int iKifu, ref bool toBreak) =>
            {
                Move ss = PureMemory.kifu_moveArray[iKifu];
                if (temeMade < iKifu)
                {
                    toBreak = true;
                    return;
                }

                MoveType ssType = MoveType.N00_Karappo;
                if (DoMoveOpe.TryFailDoMoveAll(ss, ssType
#if DEBUG
                                               , f
                                               , (IDebugMojiretu)hyoji
                                               , false
                                               , "Try_GoToTememade"
#endif
                                               ))
                {
                    toBreak = true;
                    return;
                }
                // 手番を進めるぜ☆(^~^)
                MoveGenAccessor.AddKifu(ss, ssType, PureMemory.dmv_ks_c);
//#if DEBUG
//                Util_Tansaku.Snapshot("GoToTememade", (IDebugMojiretu)hyoji);
//#endif

                temeMade--;
            });
            return(true);
        }
예제 #2
0
        /// <summary>
        /// 棋譜に沿って、終局図まで進めるぜ☆(^~^)
        /// 局面は初期局面に設定し、「手目」は0に戻してあるものとするぜ☆(^~^)
        /// </summary>
        /// <param name="ky2"></param>
        /// <param name="hyoji"></param>
        public static bool Try_PlayMoves_0ToPreTeme(FenSyurui f, StringBuilder hyoji)
        {
            // 棋譜を元に、局面データを再現するぜ☆
            MoveGenAccessor.ScanMoves_0ToPreTeme((int iTeme, ref bool toBreak) => {
                Move ss = PureMemory.mvs_ssAr[iTeme];

#if DEBUG
                hyoji.AppendLine(string.Format("[{0}] 指すぜ☆(^~^) ss={1}",
                                               iTeme,
                                               SpkMove.ToString_Fen(PureSettei.fenSyurui, ss)
                                               ));
                int a = 0;
#endif


                if (DoMoveOpe.TryFailDoMoveAll(
                        ss,
                        MoveType.N00_Karappo
#if DEBUG
                        , f
                        , (IDebugMojiretu)hyoji
                        , false
                        , "Try_GoToFinish"
#endif
                        ))
                {
                    toBreak = true;
                    return;
                }
                MoveGenAccessor.AddKifu(ss, MoveType.N00_Karappo, PureMemory.dmv_ks_c);
#if DEBUG
                // 局面表示☆
                Interproject.project.HyojiKyokumen(iTeme, hyoji);
                // 駒の居場所表示☆
                Interproject.project.HyojiIbasho("Try_PlayMoves_0ToPreTeme", hyoji);
#endif
            });

            return(true);
        }