public int GetValue(JumpNode valueSubject) { var blackFields = valueSubject.ActualGraph.GetBlackFields(); if (blackFields.Count() == 0) { return(0); } var averageDistance = blackFields.Where(field => _targetBorder.GetDistanceFrom(field) < _originalDistance).Average(field => _targetBorder.GetDistanceFrom(field)); return((int)(averageDistance * _averageDistanceWeight)); }
public int GetValue(JumpNode valueSubject) { var blackFields = valueSubject.ActualGraph.GetBlackFields(); if (blackFields.Count() == 0) { return(0); } var goodBlackFields = blackFields.Count(field => _targetBorder.GetDistanceFrom(field) < _originalDistance); return(goodBlackFields * _goodBlackFieldsWeight); }
public int GetValue(IFieldsGraph valueSubject) { var whiteField = valueSubject.GetWhiteField(); var rawDistance = _winingBorder.GetDistanceFrom(whiteField); if (rawDistance == 0) { return(_winingBorder.WinValue); } var distanceBetweenBorders = DistanceBetweenBorders(); if (rawDistance >= distanceBetweenBorders) { return(_winingBorder.LooseValue); } return(distanceBetweenBorders - rawDistance); }
public AverageBlackStoneToTargetBorderDistance(IPlayersState playersState, IFieldsGraph actualGraph, int averageDistanceWeight) { _targetBorder = playersState.CurrentPlayer.GetTargetBorder(actualGraph); _originalDistance = _targetBorder.GetDistanceFrom(actualGraph.GetWhiteField()); _averageDistanceWeight = averageDistanceWeight; }
public BlackStoneToTargetBorderCount(IPlayersState playersState, IFieldsGraph actualGraph, int goodBlackFieldsWeight) { _targetBorder = playersState.CurrentPlayer.GetTargetBorder(actualGraph); _originalDistance = _targetBorder.GetDistanceFrom(actualGraph.GetWhiteField()); _goodBlackFieldsWeight = goodBlackFieldsWeight; }