public IHttpActionResult Fire([FromBody] string coordinates) { var isValid = Regex.IsMatch(coordinates, @"^[a-jA-J]([0-9]|10)$"); if (!isValid) { return(BadRequest("The coordinates are not valid.")); } var coordinateGuess = new CoordinateGuess { HorizontalCoordinate = ToCoordinate(coordinates[0]), VerticalCoordinate = GetVerticalCoordinate(coordinates) }; var result = _coordinateGuessService.Guess(coordinateGuess); return(Ok(result)); }
public GuessResult Guess(CoordinateGuess coordinates) { foreach (var ship in _gameState.Ships) { var coordinatesHit = ship.Coordinates.FirstOrDefault( o => o.HorizontalCoordinate == coordinates.HorizontalCoordinate && o.VerticalCoordinate == coordinates.VerticalCoordinate); if (coordinatesHit != null) { coordinatesHit.HasBeenHit = true; if (ship.Coordinates.Any(o => !o.HasBeenHit)) { return(GuessResult.Hit); } return(GuessResult.Sink); } } return(GuessResult.Miss); }