internal WorldCoordinates Compute(AbsoluteDirections direction, int unitDistance)
        {
            switch (direction)
            {
            case AbsoluteDirections.North:
                return(new WorldCoordinates(_Latitude, _Longitude - unitDistance));

            case AbsoluteDirections.South:
                return(new WorldCoordinates(_Latitude, _Longitude + unitDistance));

            case AbsoluteDirections.West:
                return(new WorldCoordinates(_Latitude - unitDistance, _Longitude));

            case AbsoluteDirections.East:
                return(new WorldCoordinates(_Latitude + unitDistance, _Longitude));
            }

            throw new NotImplementedException();
        }
Ejemplo n.º 2
0
        public bool HasZeroDisplacement(List <List <RelativeDirections> > decisions, out AbsoluteDirections curAbs)
        {
            int HSum = 0;
            int VSum = 0;

            curAbs = AbsoluteDirections.Up;
            for (int i = 0; i < decisions.Count; i++)
            {
                var curDList = decisions[i];
                var end      = curDList[curDList.Count - 1];
                switch (curAbs)
                {
                case AbsoluteDirections.Right:
                    switch (end)
                    {
                    case RelativeDirections.Right: curAbs = AbsoluteDirections.Down; VSum--; break;

                    case RelativeDirections.Left: curAbs = AbsoluteDirections.Up; VSum++; break;

                    case RelativeDirections.Front: HSum++; break;

                    default: break;
                    }
                    break;

                case AbsoluteDirections.Left:
                    switch (end)
                    {
                    case RelativeDirections.Right: curAbs = AbsoluteDirections.Up; VSum++; break;

                    case RelativeDirections.Left: curAbs = AbsoluteDirections.Down; VSum--; break;

                    case RelativeDirections.Front: HSum--; break;

                    default: break;
                    }
                    break;

                case AbsoluteDirections.Up:
                    switch (end)
                    {
                    case RelativeDirections.Right: curAbs = AbsoluteDirections.Right; HSum++; break;

                    case RelativeDirections.Left: curAbs = AbsoluteDirections.Left; HSum--; break;

                    case RelativeDirections.Front: VSum++; break;

                    default: break;
                    }

                    break;

                case AbsoluteDirections.Down:
                    switch (end)
                    {
                    case RelativeDirections.Right: curAbs = AbsoluteDirections.Left; HSum--; break;

                    case RelativeDirections.Left: curAbs = AbsoluteDirections.Right; HSum++; break;

                    case RelativeDirections.Front: VSum--; break;

                    default: break;
                    }
                    break;

                default:
                    break;
                }
                if (HSum == 0 && VSum == 0)
                {
                    return(true);
                }
            }
            return(false);
        }
 /// <summary>
 /// No one should create a warrior except the world.
 /// </summary>
 /// <param name="theWorld"></param>
 internal Warrior(World theWorld)
 {
     TheWorld         = theWorld;
     CurrentDirection = AbsoluteDirections.North;
 }
        internal WorldCoordinates Compute(AbsoluteDirections direction, int unitDistance)
        {
            switch (direction)
            {
                case AbsoluteDirections.North:
                    return new WorldCoordinates(_Latitude, _Longitude - unitDistance);
                case AbsoluteDirections.South:
                    return new WorldCoordinates(_Latitude, _Longitude + unitDistance);
                case AbsoluteDirections.West:
                    return new WorldCoordinates(_Latitude - unitDistance, _Longitude);
                case AbsoluteDirections.East:
                    return new WorldCoordinates(_Latitude + unitDistance, _Longitude);
            }

            throw new NotImplementedException();
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="location"></param>
 /// <param name="direction"></param>
 /// <param name="unitDistance"></param>
 /// <returns></returns>
 private IEntity _GetEntityAt(Room theRoom, WorldCoordinates location, AbsoluteDirections direction, int unitDistance)
 {
     var coordinateToCheck = (WorldCoordinates)location.Compute(direction, unitDistance);
     return theRoom.GetEntityAtCoordinate(coordinateToCheck);
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="location"></param>
        /// <param name="direction"></param>
        /// <param name="unitDistance"></param>
        /// <returns></returns>
        private IEntity _GetEntityAt(Room theRoom, WorldCoordinates location, AbsoluteDirections direction, int unitDistance)
        {
            var coordinateToCheck = (WorldCoordinates)location.Compute(direction, unitDistance);

            return(theRoom.GetEntityAtCoordinate(coordinateToCheck));
        }