Esempio n. 1
0
            public void Move()
            {
                //move
                switch (currentDirection)
                {
                case Day13Direction.Left:
                    Position = new Point(Position.X - 1, Position.Y);
                    break;

                case Day13Direction.Up:
                    Position = new Point(Position.X, Position.Y - 1);
                    break;

                case Day13Direction.Right:
                    Position = new Point(Position.X + 1, Position.Y);
                    break;

                case Day13Direction.Down:
                    Position = new Point(Position.X, Position.Y + 1);
                    break;
                }

                //rotate
                Day13TrackType currentTrack = Map[Position.X, Position.Y];

                switch (currentTrack)
                {
                case Day13TrackType.None:
                    throw new Exception("Error! Train out of track!!");

                case Day13TrackType.UpDown:
                    break;

                case Day13TrackType.LeftRight:
                    break;

                case Day13TrackType.Left:
                    switch (currentDirection)
                    {
                    case Day13Direction.Left:
                        currentDirection = Day13Direction.Up;
                        break;

                    case Day13Direction.Up:
                        currentDirection = Day13Direction.Left;
                        break;

                    case Day13Direction.Right:
                        currentDirection = Day13Direction.Down;
                        break;

                    case Day13Direction.Down:
                        currentDirection = Day13Direction.Right;
                        break;
                    }
                    break;

                case Day13TrackType.Right:
                    switch (currentDirection)
                    {
                    case Day13Direction.Left:
                        currentDirection = Day13Direction.Down;
                        break;

                    case Day13Direction.Up:
                        currentDirection = Day13Direction.Right;
                        break;

                    case Day13Direction.Right:
                        currentDirection = Day13Direction.Up;
                        break;

                    case Day13Direction.Down:
                        currentDirection = Day13Direction.Left;
                        break;
                    }
                    break;

                case Day13TrackType.All:
                    currentDirection = (Day13Direction)(((int)currentDirection + DIRECTION_CHANGE[currentPositionInDirectionChange] + 4) % 4);
                    currentPositionInDirectionChange = (currentPositionInDirectionChange + 1) % DIRECTION_CHANGE.Length;
                    break;
                }
            }
Esempio n. 2
0
 public Day13Train(Day13Direction direction, Point initialPosition)
 {
     currentDirection = direction;
     Position         = initialPosition;
 }