コード例 #1
0
        public void MakePlayerMovement_WhenPlayerMadeSomeMovements_ShouldReturnCorrectStatus()
        {
            // Arrange
            var gridGeneratorMock = new Mock <IGridGenerator>();

            gridGeneratorMock.Setup(x => x.Generate(false)).Returns(() =>
            {
                var cpuGrid = new Grid();
                cpuGrid.AddShip(new Ship(new Coordinates(1, 1), Orientation.Horizontal, 2));

                return(cpuGrid);
            });

            BattleshipOneSideGameEngine engine = new BattleshipOneSideGameEngine(gridGeneratorMock.Object);

            // Act
            // Assert

            // miss
            Assert.AreEqual(GameStatus.PlayerMovement, engine.Status);
            var cellStatu = engine.MakePlayerMovement(0, 0);

            Assert.AreEqual(CellStatus.Miss, cellStatu);

            // hit
            Assert.AreEqual(GameStatus.PlayerMovement, engine.Status);
            cellStatu = engine.MakePlayerMovement(1, 1);
            Assert.AreEqual(CellStatus.Hit, cellStatu);

            // sunk
            Assert.AreEqual(GameStatus.PlayerMovement, engine.Status);
            cellStatu = engine.MakePlayerMovement(1, 2);
            Assert.AreEqual(CellStatus.Sunk, cellStatu);
            Assert.AreEqual(GameStatus.PlayerWon, engine.Status);
        }
コード例 #2
0
    public void StartNewGame()
    {
      BattleshipOneSideGameEngine engine = new BattleshipOneSideGameEngine(new RandomGridGenerator());

      while (engine.Status == GameStatus.PlayerMovement)
      {
        engine.Grid.PrintCpuGrid();

        var coordinates = ConsoleHelper.ReadCoordinates();
        engine.MakePlayerMovement(coordinates.Row, coordinates.Column);

        Console.Clear();
      }

      engine.Grid.PrintCpuGrid();
      Console.WriteLine("You won!");
      Console.ReadKey();
    }