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")); }
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; }