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