コード例 #1
0
        public static int WalkMatrixPath(Matrix matrix, int indexX, int indexY, int startStep)
        {
            IDirectionSet2D matrixDirectionSet = matrix.DirectionSet;
            Direction2D     direction2D        = new Direction2D(matrixDirectionSet);

            matrix[indexX, indexY] = startStep;
            var walkLenght = 1;

            while (matrix.IsChangeDirectionPossible(indexX, indexY))
            {
                int deltaX;
                int deltaY;
                direction2D.GetDelta(out deltaX, out deltaY);
                while (!matrix.IsValidEmptyCell(indexX + deltaX, indexY + deltaY))
                {
                    direction2D.Increase();
                    direction2D.GetDelta(out deltaX, out deltaY);
                }

                indexX += deltaX;
                indexY += deltaY;

                matrix[indexX, indexY] = startStep + walkLenght;
                walkLenght++;
            }

            return(walkLenght);
        }
コード例 #2
0
 public Matrix(int rang, IDirectionSet2D directionSet)
 {
     this.Grid         = new int[rang, rang];
     this.DirectionSet = directionSet;
 }
コード例 #3
0
 public Direction2D(IDirectionSet2D directionSet)
 {
     this.directionSet = directionSet;
 }
コード例 #4
0
 public Direction2D(IDirectionSet2D directionSet, int direction)
     : this(directionSet)
 {
     this.Number = direction;
 }