// 成れない駒(X Koma) 捨て王手指し public static void GenerateNx_SuteOteZasi() { // 王手に限る☆ GenerateMove03.SiborikomiOte(); // 紐を付けない☆ GenerateMove03.KesuHimoduke(); while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) // 立っているビットを降ろすぜ☆ { if (GenerateMove03.TadasuteNoUgoki()) // タダ捨ての動きに限る☆ { PureMemory.SetSsssGenk( Tume1Hantei.CheckBegin_Tume1_BanjoKoma(),// 一手詰めルーチン☆ false, NigemitiWatasuKansyu.IsNigemitiWoAkeru() ); MoveGenAccessor.AddMoveNarazuGoodXorBad(); if (Tume1Hantei.CheckEnd_Tume1()) { break; } //終了☆ } } }
// 成れる駒(Nareru Koma) 捨て緩慢指し(タダ捨て指し) public static void GenerateNk_SuteKanmanZasi() { // 王手も除外するぜ☆(^▽^) GenerateMove03.KesuOte(); // 成れる場合 while (PureMemory.ssss_bbVar_idosaki_nari.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) // 立っているビットを降ろすぜ☆ { if (GenerateMove03.TadasuteNoUgoki()) // 相手の利きがあって、自分を除いた味方の利きがない升 に限るぜ☆(^▽^)www { PureMemory.SetSsssGenk( false, // タダ捨てに、一手詰めは無いだろう☆(*^~^*) GenerateMove03.IsMisuteruUgoki(), false //逃げ道を開けて逃がすかどうかは判定しないぜ☆(^~^) ); MoveGenAccessor.AddMoveNariGood(); } } while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) // 立っているビットを降ろすぜ☆ { if (GenerateMove03.TadasuteNoUgoki()) // 相手の利きがあって、自分を除いた味方の利きがない升 に限るぜ☆(^▽^)www { PureMemory.SetSsssGenk( false, // タダ捨てに、一手詰めは無いだろう☆(*^~^*) GenerateMove03.IsMisuteruUgoki(), false //逃げ道を開けて逃がすかどうかは判定しないぜ☆(^~^) ); MoveGenAccessor.AddMoveNarazuGoodXorBad(); } } }
// らいおん 駒を取る手 public static void GenerateRaion_KomaWoToruTe() { // トライ は除外するぜ☆(^▽^) GenerateMove03.KesuTry(); // らいおん が自分から 相手の利きに飛び込むのを防ぐぜ☆(^▽^)www GenerateMove03.KesuRaionJisatusyu(); while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) { // 駒を取るような全ての手は、選択肢に入れるぜ☆(^~^) PureMemory.SetSsssGenk( Tume1Hantei.CheckBegin_Tume1_BanjoKoma(),// 一手詰めルーチン☆ false, NigemitiWatasuKansyu.IsNigemitiWoAkeru() ); MoveGenAccessor.AddMoveNarazuGoodXorBad(); if (Tume1Hantei.CheckEnd_Tume1()) { break; } //終了☆ } }
// ぼっち緩慢指 | 紐付緩慢指 public static void Generate02NiwatoriNado_BottiKanmanZasi_HimodukiKanmanZasi() { // 王手も除外するぜ☆(^▽^) GenerateMove03.KesuOte(); while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) // 立っているビットを降ろすぜ☆ { if (!GenerateMove03.TadasuteNoUgoki()) // タダ捨てではない動きに限るぜ☆(^▽^) { // 一手詰めルーチン☆ PureMemory.SetSsssGenk( Tume1Hantei.CheckBegin_Tume1_BanjoKoma(), GenerateMove03.IsMisuteruUgoki(), false//逃げ道を開けて逃がすかどうかは判定しないぜ☆(^~^) ); MoveGenAccessor.AddMoveNarazuGoodXorBad(); if (Tume1Hantei.CheckEnd_Tume1()) { break; } //終了☆ } } }
// らいおん 逼迫返討手 public static void GenerateRaion_HippakuKaeriutiTe() { if (PureMemory.hot_isNigerarenaiCheckerAr[PureMemory.kifu_nTeban]) { // 逃げられない状況で、王手が掛かけられていれば☆(^~^) // らいおん が自分から利きに飛び込むのを防ぐぜ☆(^▽^)www GenerateMove03.KesuRaionJisatusyu(); while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) { PureMemory.SetSsssGenk( Tume1Hantei.CheckBegin_Tume1_BanjoKoma(),// 一手詰めルーチン☆ false, false ); // チェッカーを取るような全ての手は、選択肢に入れるぜ☆(^~^) MoveGenAccessor.AddMoveNarazuGood(); if (Tume1Hantei.CheckEnd_Tume1()) { break; } //終了☆ } } }
/// <summary> /// グローバル変数 Util_MoveSeisei.Movelist[fukasa] に、指し手が追加されていくぜ☆(^▽^) /// 捨て緩慢打(タダ捨て打) /// </summary> /// <param name="mks"></param> /// <param name="mk"></param> /// <param name="ks"></param> public static void GenerateMotigoma_SuteDa() { while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) // 立っているビットを降ろすぜ☆ { if (GenerateMove03.TadasuteNoUgoki()) // タダ捨ての動きに限る☆ { PureMemory.SetSsssGenk( false, // タダ捨てに、一手詰めは無いだろう☆(*^~^*) false, // 持ち駒を打つのに、見捨てる動きも無いだろう☆(^~^) false // 持ち駒を打つのに、逃げ道を開けて逃がす動きも無いだろう☆(^~^) ); MoveGenAccessor.AddMoveUttaGood(); } } }
/// <summary> /// グローバル変数 Util_MoveSeisei.Movelist[fukasa] に、指し手が追加されていくぜ☆(^▽^) /// 紐付王手打 /// </summary> /// <param name="mks"></param> /// <param name="mk"></param> /// <param name="ks"></param> public static void GenerateMotigoma_NormalDa() { while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst))// 立っているビットを降ろすぜ☆ { PureMemory.SetSsssGenk( Tume1Hantei.CheckBegin_Ittedume_MotiKoma(), // 一手詰めルーチン☆ false, // 持ち駒を打つのに、見捨てる動きも無いだろう☆(^~^) false // 持ち駒を打つのに、逃げ道を開けて逃がす動きも無いだろう☆(^~^) ); MoveGenAccessor.AddMoveUttaGood(); if (Tume1Hantei.CheckEnd_Tume1()) { break; } //終了☆ } }
// 成れる駒(Nareru Koma) 余裕返討手 public static void GenerateNk_YoyuKaeriutiTe() { if (!PureMemory.hot_isNigerarenaiCheckerAr[PureMemory.kifu_nTeban]) { // 逃げられない状況で、王手が掛かけられている……、というわけでもなければ☆(^~^) // 成れる場合 while (PureMemory.ssss_bbVar_idosaki_nari.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) { PureMemory.SetSsssGenk( Tume1Hantei.CheckBegin_Tume1_BanjoKoma(),// 一手詰めルーチン☆ false, false ); // チェッカーを取るような全ての手は、選択肢に入れるぜ☆(^~^) MoveGenAccessor.AddMoveNariGood(); if (Tume1Hantei.CheckEnd_Tume1()) { break; } //終了☆ } while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) { PureMemory.SetSsssGenk( Tume1Hantei.CheckBegin_Tume1_BanjoKoma(),// 一手詰めルーチン☆ false, false ); // チェッカーを取るような全ての手は、選択肢に入れるぜ☆(^~^) MoveGenAccessor.AddMoveNarazuGood(); if (Tume1Hantei.CheckEnd_Tume1()) { break; } //終了☆ } } }
// らいおん、成れない駒(X Koma) 駒を取る手 public static void GenerateXk_KomaWoToruTe() { while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst)) { // 駒を取るような全ての手は、選択肢に入れるぜ☆(^~^) PureMemory.SetSsssGenk( Tume1Hantei.CheckBegin_Tume1_BanjoKoma(),// 一手詰めルーチン☆ false, NigemitiWatasuKansyu.IsNigemitiWoAkeru() ); MoveGenAccessor.AddMoveNarazuGoodXorBad(); if (Tume1Hantei.CheckEnd_Tume1()) { break; } //終了☆ } }
// 成れる駒(Nareru Koma) らいおんキャッチ調査 | らいおんキャッチ public static void GenerateNk_RaionCatch() { // 成れる場合 if (PureMemory.ssss_bbVar_idosaki_nari.GetNTZ(out PureMemory.ssss_ugoki_ms_dst)) { // らいおんをキャッチする手は、1つ見つければOKだぜ☆(^~^) if (MoveType.N17_RaionCatchChosa == PureMemory.ssss_ugoki_kakuteiSsType) { // 調査するだけ☆ らいおんキャッチできることが分かったので終了☆(^~^) PureMemory.hot_raionCatchChosaAr[PureMemory.kifu_nTeban] = true; return; } MoveGenAccessor.AddMoveNariGood(); PureMemory.SetTansakuUtikiri(TansakuUtikiri.RaionTukamaeta); } if (PureMemory.ssss_bbVar_idosaki_narazu.GetNTZ(out PureMemory.ssss_ugoki_ms_dst)) { // らいおんをキャッチする手は、1つ見つければOKだぜ☆(^~^) if (MoveType.N17_RaionCatchChosa == PureMemory.ssss_ugoki_kakuteiSsType) { // 調査するだけ☆ らいおんキャッチできることが分かったので終了☆(^~^) PureMemory.hot_raionCatchChosaAr[PureMemory.kifu_nTeban] = true; return; } PureMemory.SetSsssGenk( false, false, NigemitiWatasuKansyu.IsNigemitiWoAkeru() ); MoveGenAccessor.AddMoveNarazuGoodXorBad(); PureMemory.SetTansakuUtikiri(TansakuUtikiri.RaionTukamaeta); } }
// 仲間を見捨てる動きは Badへ☆(^~^) // らいおん ぼっち緩慢指 | 紐付き緩慢指 (らいおんは 捨て緩慢指し をやらないぜ☆) public static void GenerateRaion_BottiKanmanZasi_HimodukiKanmanZasi() { // トライ は除外するぜ☆(^▽^) GenerateMove03.KesuTry(); // らいおん が自分から 相手の利きに飛び込むのを防ぐぜ☆(^▽^)www GenerateMove03.KesuRaionJisatusyu(); while (PureMemory.ssss_bbVar_idosaki_narazu.Ref_PopNTZ(out PureMemory.ssss_ugoki_ms_dst))// 立っているビットを降ろすぜ☆ { PureMemory.SetSsssGenk( Tume1Hantei.CheckBegin_Tume1_BanjoKoma(), // 一手詰めルーチン☆ GenerateMove03.IsMisuteruUgoki(), false //逃げ道を開けて逃がすかどうかは判定しないぜ☆(^~^) ); MoveGenAccessor.AddMoveNarazuGoodXorBad(); if (Tume1Hantei.CheckEnd_Tume1()) { break; } //終了☆ } }