/// <summary> /// 反映するぜ☆(^▽^) /// </summary> /// <param name="ky"></param> /// <param name="mk"></param> /// <param name="ninsyo"></param> public void HaneiMotiKoma(Kyokumen ky, MotiKoma mk) { if (DebugOptions.EvaluationHand) { // 駒の位置(評価関数の項目番号)☆ 持ち駒が 0 枚で、-1 の場合もあり☆ int koumokuNo = Util_NikomaKankei.GetKoumokuBango_MotiKoma(ky, mk); if (-1 != koumokuNo) { Util_NikomaKankei.MakeKoumokuBangoHairetu_Subete(ky, Util_NikomaKankei.KoumokuBangoHairetu1); Increase( Util_NikomaKankei.Kazoeru_NikomaKankeiHyokati_ItiTaiTa_SabunKosinYou(ky, koumokuNo, Util_NikomaKankei.KoumokuBangoHairetu1 ) ); } } }
/// <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 )); } }
public void KesuMotiKoma(Kyokumen ky, MotiKoma mk) { if (DebugOptions.ReduceHand) { // 駒の位置(評価関数の項目番号)☆ 持ち駒が 0 枚で、-1 の場合もあり☆ int koumokuNo = Util_NikomaKankei.GetKoumokuBango_MotiKoma(ky, mk); // Debug.Assert(koumokuNo != -1, $"mk=[{mk}]"); // 減点するぜ☆(^▽^) if (-1 != koumokuNo) { Util_NikomaKankei.MakeKoumokuBangoHairetu_Subete(ky, Util_NikomaKankei.KoumokuBangoHairetu1); Increase((Hyokati)( -(int)Util_NikomaKankei.Kazoeru_NikomaKankeiHyokati_ItiTaiTa_SabunKosinYou(ky, koumokuNo, Util_NikomaKankei.KoumokuBangoHairetu1)//評価値 )); } } }