public IActionResult Attack([FromBody] AttackRequestDto requestDto)
 {
     player.Play(new AttackCommand(simulator, requestDto), out BaseResponseDto responseDto);
     if (responseDto.Success)
     {
         return(Ok(responseDto?.Message));
     }
     return(BadRequest(responseDto?.Exception?.Message));
 }
        public void Test1_RunAttack_BeforeCreateBoard()
        {
            //Arrange
            var attackDto = new AttackRequestDto {
                XCoordinate = 1, YCoordinate = 1
            };

            Player.Play(new AttackCommand(Simulator, attackDto), out BaseResponseDto responseDto);

            Assert.IsFalse(responseDto.Success);
            Assert.IsNotNull(responseDto.Exception);
            Assert.IsTrue(responseDto.Exception.Message.Contains("Board is not created yet.Run Create Board API to initialize the Board"));
        }
Пример #3
0
        public AttackResult Attack(AttackRequestDto requestDto)
        {
            if (!Board.Initialized)
            {
                throw new ArgumentException("Board is not created yet.Run Create Board API to initialize the Board", "Initialize Board");
            }

            requestDto.XCoordinate--;
            requestDto.YCoordinate--;
            if (Board.Squares[requestDto.XCoordinate, requestDto.YCoordinate].IsOccupied())
            {
                Board.Squares[requestDto.XCoordinate, requestDto.YCoordinate].Vacant();
                return(AttackResult.Hit);
            }

            return(AttackResult.Miss);
        }
        public void Test91_AddBattleship_StrikeAttack_AttackMiss()
        {
            //Arrange
            Player.Play(new CreateBoardCommand(Simulator), out _);
            var verticalBattleshipDto = new AddBattleshipRequestDto {
                Size = 4, XCoordinate = 1, YCoordinate = 6, Direction = Direction.Vertical
            };
            var attackDto = new AttackRequestDto {
                XCoordinate = 1, YCoordinate = 10
            };

            //Act
            Player.Play(new AddBattleshipCommand(Simulator, verticalBattleshipDto), out _);
            Player.Play(new AttackCommand(Simulator, attackDto), out BaseResponseDto responseDto);


            Assert.IsTrue(responseDto.Success);
            Assert.IsNull(responseDto.Exception);
            Assert.IsTrue(responseDto.Message.Contains($"Miss"));
        }
 public AttackCommand(ISimulator simulator, AttackRequestDto requestDto)
 {
     this.simulator        = simulator;
     this.attackRequestDto = requestDto;
 }