/// <summary> /// 差分更新は、対局者1 の視点の盤で行えなんだぜ☆(^▽^) /// </summary> /// <param name="ky"></param> /// <param name="km"></param> /// <param name="ms"></param> /// <param name="fueta"></param> public void FuyasuBanjoKoma(Kyokumen ky, Koma km, Masu ms) { if (DebugOptions.AddPiecesOnBoard) { var optionalPiece = OptionalPiece.From(km); Debug.Assert(Conv_Koma.IsOk(optionalPiece), "");//空白とか禁止☆(^~^)! Util_NikomaKankei.MakeKoumokuBangoHairetu_Subete(ky, Util_NikomaKankei.KoumokuBangoHairetu1); Increase( Util_NikomaKankei.Kazoeru_NikomaKankeiHyokati_ItiTaiTa_SabunKosinYou(ky, Util_NikomaKankei.GetKoumokuBango_Banjo(ky, km, ms),// 駒の位置(評価関数の項目番号)をリストに入れておくぜ☆ Util_NikomaKankei.KoumokuBangoHairetu1 )); } }
/// <summary> /// /// </summary> /// <param name="ms">どの(0~80)升に</param> /// <param name="km">先後付きの駒</param> /// <returns></returns> public static ulong GetBanjoKey(Masu ms, Koma km, Kyokumen.Sindanyo kys) { var optionalPiece = OptionalPiece.From(km); Debug.Assert(Conv_Koma.IsOk(optionalPiece), ""); if (Dirty) { Tukurinaosi(kys); } if (!Conv_Koma.IsOk(optionalPiece)) { throw new Exception("エラー☆(>_<) 盤上の駒じゃないぜ☆"); } else if (kys.IsBanjo(ms)) { return(m_banjoKeys_[(int)ms, (int)km]); } else { throw new Exception("エラー☆(>_<) 盤上のどこに置いてある駒なんだぜ☆"); } }