Beispiel #1
0
        private int ChooseBestStrategyValue(IPlayerBoard board)
        {
            var freeFields = board.GetFieldsByColor(FieldColor.White);

            double maxStrategyValue  = 0;
            var    chosenFieldValues = new List <int>();

            foreach (var field in freeFields)
            {
                double off           = GetOffensiveValue(field);
                double def           = GetDefensiveValue(field);
                double strategyValue = GetOffensiveValue(field) * this.OffensiveFactor + GetDefensiveValue(field) * this.DefensiveFactor;
                if (strategyValue > maxStrategyValue)
                {
                    maxStrategyValue = strategyValue;
                    chosenFieldValues.Clear();
                    chosenFieldValues.Add(field.Value);
                }
                else if (strategyValue == maxStrategyValue)
                {
                    chosenFieldValues.Add(field.Value);
                }
            }

            return(chosenFieldValues[random.Next(chosenFieldValues.Count)]);
        }