Esempio n. 1
0
 public Game CreateGame()
 {
     lock (locker)
     {
         var container = new Bootstrapper().BootstrapApplication();
         container.SetDefaultsToProfile("FunctionalTests");
         container.GetInstance <ConsoleEventLogger>();
         var aiPlayerBuilder = container.GetInstance <AiPlayerBuilder>();
         _gameSpec = new GameSpec()
                     .WithPlayer(aiPlayerBuilder.BuildAiPlayer("AI - 1", new Guid()))
                     .WithPlayer(aiPlayerBuilder.BuildAiPlayer("AI - 2", new Guid()))
                     .BasicGame()
                     .WithSet <FirstGame>();
         var gameBuilder = new GameBuilder();
         var game        = gameBuilder.Initialize(_gameSpec, container.GetInstance <GameScope>());
         return(game);
     }
 }
Esempio n. 2
0
        public void Run()
        {
            var game = GameBuilder
                       .Initialize(_startingPlayerMapper, _players, _boardService)
                       .WithBoardSize(3)
                       .FirstPlayerSet(PlayerType.As().Human("Player", "X"))
                       .SecondPlayerSet(PlayerType.As().Computer("Computer", "O"))
                       .Set(StartingPlayer.As().FirstPlayer())
                       .Build();

            do
            {
                game.Accept(new DisplayBoardVisitor());
                game.Start();
                game.Play();
                game.CheckForWin();
                game.SwitchPlayer();
                game.Over();
                game.PlayAgain();
                game.End();
            } while (game.StillGoing);
        }
Esempio n. 3
0
 private static IGameBuilder BuildGameBuilder(IStartingPlayerMapper startingPlayerMapper = null,
                                              IPlayers players           = null,
                                              IBoardService boardService = null,
                                              int?size = null,
                                              IPlayerType firstPlayerType    = null,
                                              IPlayerType secondPlayerType   = null,
                                              IStartingPlayer startingPlayer = null)
 {
     startingPlayerMapper = startingPlayerMapper ?? new MockStartingPlayerMapper().AddReturnsItself();
     players          = players ?? new MockPlayers().AddReturnsItself();
     boardService     = boardService ?? new MockBoardService();
     size             = size ?? 3;
     firstPlayerType  = firstPlayerType ?? new MockPlayerType();
     secondPlayerType = secondPlayerType ?? new MockPlayerType();
     startingPlayer   = startingPlayer ?? new MockStartingPlayer();
     return(GameBuilder
            .Initialize(startingPlayerMapper, players, boardService)
            .WithBoardSize(size.Value)
            .FirstPlayerSet(firstPlayerType)
            .SecondPlayerSet(secondPlayerType)
            .Set(startingPlayer));
 }
Esempio n. 4
0
        private static void Main(string[] args)
        {
            try
            {
                int aiPlayerCount = AskForAiPlayerCount();
                _container = new Bootstrapper().BootstrapApplication();

                var aiPlayerBuilder = _container.GetInstance <AiPlayerBuilder>();

                var gameSpec = new GameSpec()
                               .BasicGame()
                               //.WithSet<FirstGame>()
                               //.WithSet<BigMoney>()
                               //.WithSet<Interaction>()
                               //.WithSet<SizeDistortion>()
                               .WithSet <Deconstruction>()
                               .WithPlayer(_container.GetInstance <PlayerSpec <ConsolePlayerController> >().WithPlayerName("You"))
                ;
                var i = 0;
                aiPlayerCount.Times(() =>
                {
                    gameSpec.WithPlayer(aiPlayerBuilder.WithTreeSpec(new TreeSpec {
                        MaxDepth = 100
                    }).BuildAiPlayer("AI - " + ++i));
                });
                var gameBuilder = new GameBuilder();
                var scope       = _container.GetInstance <GameScope>();
                new ConsoleEventLogger(scope.EventAggregator);
                Game game = gameBuilder.Initialize(gameSpec, scope);

                game.Start();
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 5
0
        public RoundResults Start()
        {
            var winners = new Population();

            var competitors = new Population(_competitors);

            var gameScores = new SeriesResults();

            do
            {
                var playersInCurrentGame = new Population();
                var game       = _gameBuilder.Initialize(MakeGameSpec(competitors, playersInCurrentGame), _gameScopeFactory());
                var gameResult = game.Start();
                gameScores.Add(gameResult);
                var winner = playersInCurrentGame.Single(c => c.Id.ToString() == gameResult.WinningPlayer.Id.ToString());
                winners.Add(winner);
            } while (competitors.Count > 0);

            return(new RoundResults
            {
                Winners = winners,
                Scores = gameScores
            });
        }