Exemple #1
0
        public PandemicGame()
        {
            var initialState           = new PandemicGameState(PandemicBoard.CreateRealGameBoard());
            var actionProcessorFactory = new ActionProcessorFactory();

            _stateMachine = new PandemicStateMachine(initialState, actionProcessorFactory);
        }
Exemple #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);
        }
Exemple #3
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));
        }
Exemple #4
0
        private static void InitialInfectCities(PandemicGameState state)
        {
            for (var numCubes = 1; numCubes <= 3; numCubes++)
            {
                for (var i = 0; i < 3; i++)
                {
                    var cityName = state.InfectionDeck.Pop();
                    var city     = state.GetCity(cityName);
                    for (var j = 0; j < numCubes; j++)
                    {
                        state.CubePile.RemoveCube(city.Colour);
                        city.AddCube(city.Colour);
                    }

                    state.InfectionDiscardPile.Push(cityName);
                }
            }
        }
Exemple #5
0
 public PandemicStateMachine(PandemicGameState initialState, IActionProcessorFactory processorFactory)
 {
     State             = initialState;
     _processorFactory = processorFactory;
 }
Exemple #6
0
 public void ProcessAction(PandemicGameState state, IAction action)
 {
     InitialInfectCities(state);
 }