Exemple #1
0
 public void Tukurinaosi_Clear()
 {
     BB_kikiKomabetu.Tukurinaosi_Clear();
     BB_kikiZenbu.Tukurinaosi_Clear();
     CB_kikisuKomabetu.Tukurinaosi_Clear();
     CB_kikisuZenbu.Tukurinaosi_Clear();
 }
Exemple #2
0
 public void Tukurinaosi_Copy(KikiBan source)
 {
     BB_kikiKomabetu.Tukurinaosi_Copy(source.BB_kikiKomabetu);
     BB_kikiZenbu.Tukurinaosi_Copy(source.BB_kikiZenbu);
     CB_kikisuKomabetu.Tukurinaosi_Copy(source.CB_kikisuKomabetu);
     CB_kikisuZenbu.Tukurinaosi_Copy(source.CB_kikisuZenbu);
 }
Exemple #3
0
 public void Tukurinaosi_Remake()
 {
     BB_kikiKomabetu.Tukurinaosi_Remake();
     BB_kikiZenbu.Tukurinaosi_Remake(BB_kikiKomabetu);
     CB_kikisuKomabetu.Tukurinaosi_Remake();
     CB_kikisuZenbu.Tukurinaosi();
 }
Exemple #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="km_target"></param>
        /// <param name="bbVar_add">注意、このメソッド実行後に0になるぜ☆(^~^)</param>
        /// <param name="yomiKy"></param>
        /// <param name="reigai1"></param>
        /// <returns></returns>
        public void OkuKiki(Piece km_target, Bitboard bbVar_add)
        {
            Taikyokusya tai = Med_Koma.KomaToTaikyokusya(km_target);

            // ビットボードは、一気に更新するぜ☆(^~^)
            Standup_Kiki(km_target, bbVar_add);
            Standup_KikiZenbu(tai, bbVar_add);

            // カウントボードは、1升ずつ、足していくぜ☆(^~^)
            Masu ms_hit;

            while (bbVar_add.Ref_PopNTZ(out ms_hit))
            {
                int result_zenbu;
                CB_kikisuZenbu.Increase1(tai, ms_hit, out result_zenbu);

                int result_komabetu;
                CB_kikisuKomabetu.Increase1(km_target, ms_hit, out result_komabetu);
            }
        }
Exemple #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="km_removed"></param>
        /// <param name="bbVer_remove">注意、このメソッド実行後に0になるぜ☆(^~^)</param>
        /// <param name="yomiKy"></param>
        /// <param name="dbg_reigai"></param>
        /// <param name="hint"></param>
        /// <param name="changing"></param>
        /// <returns></returns>
        public void TorinozokuKiki(Piece km_removed, Bitboard bbVer_remove)
        {
            Taikyokusya teban = Med_Koma.KomaToTaikyokusya(km_removed);

            // 1マスずつ、利きを減らしていくぜ☆(^~^)
            Masu ms_cur;

            while (bbVer_remove.Ref_PopNTZ(out ms_cur))
            {
                //────────────────────
                // まず 駒別を 減らす
                //────────────────────

                // (1)カウントボードの数字を減らす
                int result_komabetu;
                CB_kikisuKomabetu.Decrease1(km_removed, ms_cur, out result_komabetu);

                // (2)「カウントが無くなったら」ビットをOFFにするんだぜ☆(^~^)まるごとOFFにしてはいけないぜ☆(^~^)
                if (result_komabetu < 1)
                {
                    Sitdown_Kiki(km_removed, ms_cur);
                }

                //────────────────────
                // 次に 対局者別を 減らす
                //────────────────────

                // (1)カウントボードの数字を減らす
                int result_zenbu;
                CB_kikisuZenbu.Decrease1(teban, ms_cur, out result_zenbu);

                // (2)「カウントが無くなったら」ビットをOFFにするんだぜ☆(^~^)まるごとOFFにしてはいけないぜ☆(^~^)
                if (result_zenbu < 1)
                {
                    Sitdown_KikiZenbu(teban, ms_cur);
                }
            }

            // 現局面より、利きの数が減っているのが正解
        }
Exemple #6
0
 public Bitboard RefBB_FromKikisuZenbuPositiveNumber(Taikyokusya tai)
 {
     return(CB_kikisuZenbu.CreateBitboard_PositiveNumber(tai));
 }
Exemple #7
0
 public void SubstructFromKikisuZenbu(Piece km)
 {
     CB_kikisuZenbu.Substruct(km,
                              CB_kikisuKomabetu // こっちはクリアーされる
                              );
 }