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]++; } } } }
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); }