コード例 #1
0
ファイル: Simulation.cs プロジェクト: ashtonkj/p45-mars-rover
        private Plateau ReadPlateau()
        {
            var plateauLine = _reader.ReadLine();

            if (string.IsNullOrEmpty(plateauLine))
            {
                throw new InvalidOperationException("First line doesn't contain any data");
            }
            var plateau = Plateau.TryParse(plateauLine);

            if (plateau == null)
            {
                throw new InvalidOperationException("First line doesn't contain plateau coordinate data");
            }
            return(plateau);
        }
コード例 #2
0
        public static Rover TryParse(Plateau plateau, string str)
        {
            var parts = str.Split(" ", StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length != 3)
            {
                return(null);
            }
            else
            {
                var position  = Position.FromStrings(parts[0], parts[1]);
                var direction = DirectionUtilities.TryParse(parts[2]);
                if (position != null && direction != null)
                {
                    return(new Rover(plateau, position.Value, direction.Value));
                }
                else
                {
                    return(null);
                }
            }
        }
コード例 #3
0
        private void HandleMovement()
        {
            Position offset;

            switch (Direction)
            {
            case Direction.N: offset = new Position(0, 1); break;

            case Direction.E: offset = new Position(1, 0); break;

            case Direction.S: offset = new Position(0, -1); break;

            case Direction.W: offset = new Position(-1, 0); break;

            default: offset = new Position(0, 0); break;
            }
            var newPosition = Position + offset;

            if (Plateau.Contains(newPosition))
            {
                Position = newPosition;
            }
        }