示例#1
0
        public CreatureCommand Act(int x, int y)
        {
            GetDirection(x, y);
            var currentPosition = new Point(x, y);

            Game.PrevPositionPacman = Game.PackMansPosition;
            if (Game.teleports.teleports.Contains(currentPosition))
            {
                var goal = Game.teleports.EntranceExitPairs[currentPosition];
                if ((goal == Game.teleports.Entrance && CurrentDirection == Directions.Right) ||
                    (goal == Game.teleports.Exit && CurrentDirection == Directions.Left))
                {
                    var movement = new Point(goal.X - x, goal.Y - y);
                    Game.PackMansPosition = currentPosition.Add(goal);
                    return(new CreatureCommand {
                        DeltaX = movement.X, DeltaY = movement.Y
                    });
                }
            }
            switch (CurrentDirection)
            {
            case Directions.Up:
                if (Game.CanMoveToUp(x, y))
                {
                    return(Move(0, -1, currentPosition));
                }
                break;

            case Directions.Down:
                if (Game.CanMoveToDown(x, y))
                {
                    return(Move(0, 1, currentPosition));
                }
                break;

            case Directions.Left:
                if (Game.CanMoveToLeft(x, y))
                {
                    return(Move(-1, 0, currentPosition));
                }
                break;

            case Directions.Right:
                if (Game.CanMoveToRight(x, y))
                {
                    return(Move(1, 0, currentPosition));
                }
                break;
            }
            return(new CreatureCommand());
        }