Beispiel #1
0
        public static CompassEnum NextPosition(CompassEnum heading, string instruction)
        {
            CompassEnum newHeading;

            if (instruction == "L")
            {
                newHeading = TurnLeft(heading);
            }
            else if (instruction == "R")
            {
                newHeading = TurnRight(heading);
            }
            else
            {
                newHeading = heading;
            }

            return(newHeading);
        }
Beispiel #2
0
        public static Coordinate NewLocation(CompassEnum heading, Coordinate xy, Coordinate area)
        {
            Coordinate xyNew = xy;

            switch (heading)
            {
            case CompassEnum.North:
            {
                xyNew = new Coordinate(xy.X, xy.Y + 1);
            }
            break;

            case CompassEnum.East:
            {
                xyNew = new Coordinate(xy.X + 1, xy.Y);
            }
            break;

            case CompassEnum.South:
            {
                xyNew = new Coordinate(xy.X, xy.Y - 1);
            }
            break;

            case CompassEnum.West:
            {
                xyNew = new Coordinate(xy.X - 1, xy.Y);
            }
            break;
            }
            if (area.X < xy.X)
            {
                return(xy);
            }
            if (area.Y < xy.Y)
            {
                return(xy);
            }
            return(xyNew);
        }
Beispiel #3
0
        public string GetLocation(Coordinate xy, Coordinate area, CompassEnum compass, string directions)
        {
            var         directionSplit  = directions.ToCharArray();
            var         currentLocation = xy;
            var         currentHeading  = compass;
            CompassEnum newHeading;

            for (var i = 0; i < directionSplit.Length; i++)
            {
                var instruction = directionSplit[i].ToString();
                newHeading = CompassDirector.NextPosition(currentHeading, instruction);
                if (newHeading == currentHeading)
                {
                    currentLocation = CoordinateDirector.NewLocation(newHeading, currentLocation, area);
                }
                currentHeading = newHeading;
            }


            var finalLocation = currentLocation.X.ToString() + currentLocation.Y.ToString() + CompassConvertor(currentHeading);

            return(finalLocation);
        }
        private CompassEnum CompassConvertor(string heading)
        {
            CompassEnum compHeading = CompassEnum.North;

            switch (heading)
            {
            case "N":
                compHeading = CompassEnum.North;
                break;

            case "E":
                compHeading = CompassEnum.East;
                break;

            case "S":
                compHeading = CompassEnum.South;
                break;

            case "W":
                compHeading = CompassEnum.West;
                break;
            }
            return(compHeading);
        }
Beispiel #5
0
        private string CompassConvertor(CompassEnum heading)
        {
            string stringHeading = string.Empty;

            switch (heading)
            {
            case CompassEnum.North:
                stringHeading = "N";
                break;

            case CompassEnum.East:
                stringHeading = "E";
                break;

            case CompassEnum.South:
                stringHeading = "S";
                break;

            case CompassEnum.West:
                stringHeading = "W";
                break;
            }
            return(stringHeading);
        }
Beispiel #6
0
        private static CompassEnum TurnRight(CompassEnum heading)
        {
            CompassEnum newHeading = heading;

            switch (heading)
            {
            case CompassEnum.North:
            { newHeading = CompassEnum.East; }
            break;

            case CompassEnum.East:
            { newHeading = CompassEnum.South; }
            break;

            case CompassEnum.South:
            { newHeading = CompassEnum.West; }
            break;

            case CompassEnum.West:
            { newHeading = CompassEnum.North; }
            break;
            }
            return(newHeading);
        }