コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }