예제 #1
0
        private Square NextSquare(Square from, Direction direction, int distance = 1)
        {
            int file = (int)from.File;
            int rank = from.Rank;

            switch (direction)
            {
            case Direction.Up:
                rank += distance;
                break;

            case Direction.Down:
                rank -= distance;
                break;

            case Direction.Left:
                file -= distance;
                break;

            case Direction.Right:
                file += distance;
                break;

            case Direction.UpperLeft:
                rank += distance;
                file -= distance;
                break;

            case Direction.UpperRight:
                rank += distance;
                file += distance;
                break;

            case Direction.LowerLeft:
                rank -= distance;
                file -= distance;
                break;

            case Direction.LowerRight:
                rank -= distance;
                file += distance;
                break;

            default:
                return(null);
            }
            if (rank > Board.Size || rank < 0 || file > Board.Size || file < 0)
            {
                return(null);
            }
            return(Board[Square.GetId((File)file, rank)]);
        }