コード例 #1
0
ファイル: RoboAction.cs プロジェクト: SeeSharpSoft/MonoRobots
        /// <summary>
        /// Performs a robot movement.
        /// </summary>
        /// <param name="position">Position of the robot before the action.</param>
        /// <param name="board">Board to perform action on.</param>
        /// <returns>Position of robot after performing the action.</returns>
        public override RoboPosition PerformAction(RoboPosition position, RoboBoard board)
        {
            RoboField field = board.GetField(position);

            if (!field.CanLeave(this.Direction))
            {
                return(position);
            }

            RoboPosition result = PerformAction(position);

            RoboField neighbor = board.GetField(result);

            if (neighbor == null || !neighbor.CanEnter(RoboRotation.Rotate(this.Direction, Rotation.Around)))
            {
                return(position);
            }

            return(result);
        }