Пример #1
0
            public void Tukurinaosi_Remake()
            {
                valueKmMs = new int[Conv_Koma.itiran.Length][];

                Bitboard bb_ibashoCopy    = new Bitboard();
                Bitboard bb_ugokikataCopy = new Bitboard();

                // 盤上
                foreach (Piece km_all in Conv_Koma.itiran)
                {
                    Taikyokusya tai = Med_Koma.KomaToTaikyokusya(km_all);
                    Komasyurui  ks  = Med_Koma.KomaToKomasyurui(km_all);
                    valueKmMs[(int)km_all] = new int[PureSettei.banHeimen];

                    PureMemory.gky_ky.yomiKy.yomiShogiban.yomiIbashoBan.ToSet_Koma(km_all, bb_ibashoCopy);
                    Masu ms_ibasho;
                    while (bb_ibashoCopy.Ref_PopNTZ(out ms_ibasho))
                    {
                        BitboardsOmatome.KomanoUgokikataYk00.ToSet_Merge(
                            km_all,
                            ms_ibasho,
                            bb_ugokikataCopy);

                        Masu ms_kiki;
                        while (bb_ugokikataCopy.Ref_PopNTZ(out ms_kiki))
                        {
                            valueKmMs[(int)km_all][(int)ms_kiki]++;
                        }
                    }
                }
            }
Пример #2
0
 public bool Exists(Taikyokusya tai, Masu ms, out Komasyurui out_ks)
 {
     for (int iKm = 0; iKm < Conv_Koma.itiranTai[(int)tai].Length; iKm++)
     {
         Piece km = Conv_Koma.itiranTai[(int)tai][iKm];
         if (valueKm[(int)km].IsOn(ms))
         {
             out_ks = Med_Koma.KomaToKomasyurui(km);
             return(true);
         }
     }
     out_ks = Komasyurui.Yososu;
     return(false);
 }