public Game(IAgeStrategy ageStrategy, IWinningStrategy winningStrategy, IActionStrategy actionStrategy = null) { _ageStrategy = ageStrategy; _winningStrategy = winningStrategy; _actionStrategy = actionStrategy; PlayerInTurn = Player.RED; Age = -4000; // Add Standard Cities _cities.Add(new Position(1, 1), new City(Player.RED, new Position(1, 1))); _cities.Add(new Position(4, 1), new City(Player.BLUE, new Position(4, 1))); // Add standard units _units.Add(new Position(2, 0), new Unit(Player.RED, GameConstants.Archer)); _units.Add(new Position(3, 2), new Unit(Player.BLUE, GameConstants.Legion)); _units.Add(new Position(4, 3), new Unit(Player.RED, GameConstants.Settler)); // Decorate the board with tiles _tiles.Add(new Position(1, 0), new Tile(GameConstants.Ocean)); _tiles.Add(new Position(0, 1), new Tile(GameConstants.Hills)); _tiles.Add(new Position(2, 2), new Tile(GameConstants.Mountains)); _redCity = GetCityAt(new Position(1, 1)); _blueCity = GetCityAt(new Position(4, 1)); }
private Combination ChooseBestCombinationFrom(List <Combination> candidates, IAgeStrategy ageStrategy) { if (ThereAreNoCombinations(candidates)) { return(new Combination()); } Combination answer = candidates[0]; foreach (var candidate in candidates) { if (ageStrategy.IsMatch(candidate, answer)) { answer = candidate; } } return(answer); }
public Combination FindCombinationWith(IAgeStrategy ageStrategy) { var candidates = GetPossibleCombinations(); return(ChooseBestCombinationFrom(candidates, ageStrategy)); }
private Combination GetAgeComparison(IAgeStrategy ageStrategy, List <Person> people) { var finder = new Finder(people); return(finder.FindCombinationWith(ageStrategy)); }