コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public Combination FindCombinationWith(IAgeStrategy ageStrategy)
        {
            var candidates = GetPossibleCombinations();

            return(ChooseBestCombinationFrom(candidates, ageStrategy));
        }
コード例 #4
0
        private Combination GetAgeComparison(IAgeStrategy ageStrategy, List <Person> people)
        {
            var finder = new Finder(people);

            return(finder.FindCombinationWith(ageStrategy));
        }