// らいおん 駒を取る手 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 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; } //終了☆ } } }
// らいおん トライ public static void GenerateRaion_Try() { // らいおん が自分から 相手の利きに飛び込むのを防ぐぜ☆(^▽^)www GenerateMove03.KesuRaionJisatusyu(); Pure.Sc.Push("トライ", PureMemory.tnsk_hyoji); Bitboard trysakiBB = Util_TryRule.GetTrySaki(PureMemory.ssss_bbVar_idosaki_narazu, PureMemory.ssss_ugoki_ms_src); Pure.Sc.Pop(); if (trysakiBB.GetNTZ(out PureMemory.ssss_ugoki_ms_dst))// トライはどこか1つ行けばいい { MoveGenAccessor.AddMoveNarazuGood(); PureMemory.SetTansakuUtikiri(TansakuUtikiri.Try); } }
// 仲間を見捨てる動きは 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; } //終了☆ } }