Exemplo n.º 1
0
        public void RenderGrid(Grid grid)
        {
            Console.SetCursorPosition(GridColPosition, GridRowPosition);

            this.scene.Clear()
                .Append(' ');

            for (int i = 1; i <= GlobalConstants.GridColsCount; i++)
            {
                string toAppend = i < 9 ? i.ToString() : i.ToString().Substring(i.ToString().Length - 1);
                this.scene.Append(toAppend);
            }

            this.scene.AppendLine();

            for (int row = 0; row < grid.TotalRows; row++)
            {
                this.scene.Append((char)(GlobalConstants.MinRowValueOnGridAsciiCode + row));

                for (int col = 0; col < grid.TotalCols; col++)
                {
                    this.scene.Append(grid.GetCell(row, col));
                }

                this.scene.Append(Environment.NewLine);
            }

            Console.WriteLine(this.scene.ToString());
            this.SetCursorAtInputPosition();
        }
Exemplo n.º 2
0
 public Engine(IRenderer renderer, IInterface userInterface, IGameInitializationStrategy gameInitializationStrategy)
 {
     this.renderer = renderer;
     this.userInterface = userInterface;
     this.gameInitializationStrategy = gameInitializationStrategy;
     this.ships = new List<IShip>();
     this.hiddenGrid = new Grid();
     this.visibleGrid = new Grid();
     this.totalAttempts = 0;
     this.gameStatus = GameStatus.Play;
 }
        public void Can_Miss_Ship()
        {
            var grid = new Grid(_mockConfigurationManger.Object);

            grid.Ships.Add(_validBattleship);

            var gameService = new GameService(grid);

            const Enums.Missile expectedResult = Enums.Missile.Miss;

            gameService.FireMissile("a6");

            Assert.AreEqual(expectedResult, gameService.GetGameStatus());
        }
Exemplo n.º 4
0
 /// <summary>
 /// Updates grid position
 /// </summary>
 public void UpdateGrid(Grid grid, Position position)
 {
     Console.SetCursorPosition(position.Col + GridColPosition + 1, position.Row + GridRowPosition + 1);
     Console.Write(grid.GetCell(position.Row, position.Col));
     this.SetCursorAtInputPosition();
 }
        public void Can_Not_Enter_Invalid_Grid_References(string gridReference)
        {
            var grid = new Grid(_mockConfigurationManger.Object);

            var gameService = new GameService(grid);

            const Enums.Missile expectedResult = Enums.Missile.InvalidCoordinate;

            gameService.FireMissile(gridReference);

            Assert.AreEqual(expectedResult, gameService.GetGameStatus());
        }
        public void Can_Not_Fired_At_The_Same_Coordinates_Twice()
        {
            var grid = new Grid(_mockConfigurationManger.Object);

            grid.Ships.Add(_validBattleship);

            var gameService = new GameService(grid);

            const Enums.Missile expectedResult = Enums.Missile.AlreadyFiredAt;

            gameService.FireMissile("a1");
            gameService.FireMissile("a1");

            Assert.AreEqual(expectedResult, gameService.GetGameStatus());
        }
        public void Can_Sink_Final_Ship_And_Finish_Game()
        {
            var grid = new Grid(_mockConfigurationManger.Object);

            grid.Ships.Add(_validBattleship);

            var gameService = new GameService(grid);

            const Enums.Missile expectedResult = Enums.Missile.AllShipsDestroyed;

            gameService.FireMissile("a1");
            gameService.FireMissile("b1");
            gameService.FireMissile("c1");
            gameService.FireMissile("d1");
            gameService.FireMissile("e1");

            Assert.AreEqual(expectedResult, gameService.GetGameStatus());
        }