public void BattleShipGame_ShouldAddNewShip_WhenThereIsEnoughSpaceInTheGrid()
        {
            // Arrange
            _grid.SetupGet(x => x.Size).Returns(10);

            // Act
            _game.TryAddShip(ShipType.Battleship, 5);

            // Assert
            _grid.Verify(x => x.AddShip(It.IsAny <IShip>()), Times.Once);
        }
예제 #2
0
        static void Main(string[] args)
        {
            var gameSize = 10;
            var grid     = new Grid.Grid(gameSize);
            var game     = new BattleShipsGame(grid);

            game.ShipSunk   += ShipShunk;
            game.MissedShot += MissShot;
            game.ShipHit    += ShipHit;

            //TODO: read ships size from the configuration file
            game.TryAddShip(ShipType.Destroyer, 4);
            game.TryAddShip(ShipType.Destroyer, 4);
            game.TryAddShip(ShipType.Battleship, 5);

            _viewAdapter = new ViewAdapter(gameSize);
            while (!game.IsGameFinished)
            {
                try
                {
                    Console.WriteLine(_viewAdapter.ToString());

                    Console.WriteLine("Provide position to shoot");
                    var position = Console.ReadLine();

                    InputInterpreter.InterpretCell(position, out int rowNumber, out int columnNumber);

                    Console.WriteLine($"Shooting position: {position}.");

                    _lastShotPointRow    = rowNumber;
                    _lastShotPointColumn = columnNumber;

                    game.MakeShot(rowNumber, columnNumber);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            Console.WriteLine("Game finished !");
        }