public void After13HitShots_GameStopsPlaying()
        {
            //Battleship is Vertical at (1, 5)
            //First Destroyer is Horizontal at (4, 2)
            //Second Destroyer is Vertical at (8, 0)

            var random = new Mock <Random>();

            random.SetupSequence(x => x.Next(2)).Returns(0)
            .Returns(1)
            .Returns(0);
            random.SetupSequence(x => x.Next(10)).Returns(1).Returns(2).Returns(8);
            random.Setup(x => x.Next(6)).Returns(5);
            random.SetupSequence(x => x.Next(7)).Returns(4).Returns(0);

            var gameInitializer = new GameInitializer(random.Object);
            var game            = gameInitializer.CreateGame();

            string[] listOfHitShots = { "B5", "B6", "B7", "B8", "B9",
                                        "E2", "F2", "G2", "H2",
                                        "I0", "I1", "I2", "I3" };
            foreach (var shotCoordinates in listOfHitShots)
            {
                Assert.True(game.ShouldKeepPlaying());
                var shot = game.Shoot(shotCoordinates);
                Assert.NotNull(shot.HitShip);
            }
            Assert.False(game.ShouldKeepPlaying());
        }
示例#2
0
        public void AfterCallingCreateGame_GameIsInitialized()
        {
            var random      = new Random();
            var initializer = new GameInitializer(random);
            var game        = initializer.CreateGame();

            Assert.NotNull(game);
            Assert.NotNull(game.Battlefield);
        }
示例#3
0
        static void Main(string[] args)
        {
            Random random          = new Random();
            var    gameInitializer = new GameInitializer(random);
            var    game            = gameInitializer.CreateGame();

            UIMessages.OpeningMessage();
            Console.ReadLine();

            var battlefieldPrinter = new UIBattlefieldPrinter(game.Battlefield);

            while (game.ShouldKeepPlaying())
            {
                ExecuteGameLoop(game, battlefieldPrinter);
            }
            UIMessages.GameEndMessage();
        }