Ejemplo n.º 1
0
        /// <summary>Calculates next coordinate moving forward from selected position.</summary>
        /// <param name="currentPosition">The selected position.</param>
        /// <returns>New position.</returns>
        public PositionVector Move(PositionVector currentPosition)
        {
            int x = 0;
            int y = 0;

            switch (currentPosition.Direction)
            {
                case Direction.Notrh:
                    y = 1;
                    break;
                case Direction.East:
                    x = 1;
                    break;
                case Direction.South:
                    y = -1;
                    break;
                case Direction.West:
                    x = -1;
                    break;
                default:
                    throw new Exception("This direction is not recognised.");
            }

            var newPosition = new PositionVector(currentPosition.X + x, currentPosition.Y + y, currentPosition.Direction);

            if (this.CanMove(newPosition))
            {
                return newPosition;
            }

            return currentPosition;
        }
Ejemplo n.º 2
0
        private void PerformTest(PositionVector initialPosition, PositionVector expectedResult)
        {
            IWorld world = new World();

            var result = world.Move(initialPosition);

            Assert.AreEqual(expectedResult, result);
        }
 public void TransformClockwiseFromWest()
 {
     PositionVector vector = new PositionVector(0, 0, Direction.West);
     var result = vector.Transform(true);
     Assert.AreEqual(Direction.Notrh, result.Direction);
 }
 public void TransformAntiClockwiseFromWest()
 {
     PositionVector vector = new PositionVector(0, 0, Direction.West);
     var result = vector.Transform(false);
     Assert.AreEqual(Direction.South, result.Direction);
 }
Ejemplo n.º 5
0
 /// <summary>Rotates right</summary>
 /// <param name="right">rotate right.</param>
 /// <returns>true if successful.</returns>
 public bool Rotate(bool right)
 {
     this.Position = this.Position.Transform(right);
     return true;
 }
Ejemplo n.º 6
0
 /// <summary>Moves forward.</summary>
 /// <param name="forward">move forward.</param>
 /// <returns>true if successful.</returns>
 public bool Move()
 {
     var initialPosition = this.Position;
     this.Position = this.world.Move(this.Position);
     return !initialPosition.Equals(this.Position);
 }
Ejemplo n.º 7
0
 /// <summary>Indicated whether it is possible to go forward from location.</summary>
 /// <param name="newPosition">Location to check.</param>
 /// <returns><c>true</c> if going forward is allowed.</returns>
 private bool CanMove(PositionVector newPosition)
 {
     return newPosition.X >= this.min && newPosition.X <= this.max && newPosition.Y >= this.min && newPosition.Y <= this.max;
 }