Пример #1
0
        public PandemicGame()
        {
            var initialState           = new PandemicGameState(PandemicBoard.CreateRealGameBoard());
            var actionProcessorFactory = new ActionProcessorFactory();

            _stateMachine = new PandemicStateMachine(initialState, actionProcessorFactory);
        }
Пример #2
0
        public void GivenRealBoard_ProcessInit_ShouldInitialiseGameCorrectly()
        {
            var state = new PandemicGameState(PandemicBoard.CreateRealGameBoard());

            _processor.ProcessAction(state, new InitGameAction());

            Assert.AreEqual(2, state.InfectionRate);
            Assert.AreEqual(0, state.OutbreakCounter);

            // should have drawn 9 infection cards
            Assert.AreEqual(48 - 9, state.InfectionDeck.Count);
            Assert.AreEqual(9, state.InfectionDiscardPile.Count);

            // 9 cities should have cubes on them
            Assert.AreEqual(3, state.CityStates.Count(c => c.NumCubes(c.Colour) == 3));
            Assert.AreEqual(3, state.CityStates.Count(c => c.NumCubes(c.Colour) == 2));
            Assert.AreEqual(3, state.CityStates.Count(c => c.NumCubes(c.Colour) == 1));

            // cubes should have been removed from pile
            var sumOfAllCubesInPile = ColourExtensions.AllColours()
                                      .Select(colour => state.CubePile.NumCubes(colour))
                                      .Sum();

            Assert.AreEqual(4 * 24 - 9 - 6 - 3, sumOfAllCubesInPile);
        }
Пример #3
0
 public PandemicGameState(PandemicBoard board)
 {
     _board        = board;
     InfectionRate = 2;
     // todo: shuffle
     InfectionDeck        = new Stack <string>(_board.Cities.Select(c => c.Name));
     InfectionDiscardPile = new Stack <string>();
     CityStates           = _board.Cities.Select(c => new CityState(c)).ToList();
     _cityNameLookup      = BuildCityNameLookup(CityStates);
     CubePile             = CreateNewCubePile();
 }
Пример #4
0
        public void RealBoard_AdjacentToAtlanta()
        {
            var board = PandemicBoard.CreateRealGameBoard();
            var city  = board.GetCity("Atlanta");

            var adjacent = board.Adjacent(city);

            Assert.AreEqual(3, adjacent.Count);
            Assert.AreEqual(1, adjacent.Count(c => c.Name == "Chicago"));
            Assert.AreEqual(1, adjacent.Count(c => c.Name == "Washington"));
            Assert.AreEqual(1, adjacent.Count(c => c.Name == "Miami"));
        }
Пример #5
0
        public void GivenRealBoard_StateShouldBeReadyToInit()
        {
            var state = new PandemicGameState(PandemicBoard.CreateRealGameBoard());

            // no cubes on any cities
            Assert.AreEqual(0, state.CityStates.Sum(c => c.NumCubes(Colour.Red)));
            Assert.AreEqual(0, state.CityStates.Sum(c => c.NumCubes(Colour.Blue)));
            Assert.AreEqual(0, state.CityStates.Sum(c => c.NumCubes(Colour.Black)));
            Assert.AreEqual(0, state.CityStates.Sum(c => c.NumCubes(Colour.Yellow)));

            Assert.AreEqual(48, state.InfectionDeck.Count);
            Assert.AreEqual(0, state.InfectionDiscardPile.Count);

            Assert.AreEqual(24, state.CubePile.NumCubes(Colour.Red));
            Assert.AreEqual(24, state.CubePile.NumCubes(Colour.Blue));
            Assert.AreEqual(24, state.CubePile.NumCubes(Colour.Black));
            Assert.AreEqual(24, state.CubePile.NumCubes(Colour.Yellow));
        }
Пример #6
0
        public void RealBoard_ShouldHave48Cities()
        {
            var board = PandemicBoard.CreateRealGameBoard();

            Assert.AreEqual(48, board.Cities.Count);
        }