Example #1
0
        public static void ChangeDirection(CurrentDirection currentDirection)
        {
            Directions direction             = new Directions();
            int        currentDirectionCount = 0;
            int        DIRECTIONS_COUNT      = 8;

            for (int i = 0; i < DIRECTIONS_COUNT; i++)
            {
                if (direction.X[i] == currentDirection.X && direction.Y[i] == currentDirection.Y)
                {
                    currentDirectionCount = i;
                    break;
                }
            }

            if (currentDirectionCount == (DIRECTIONS_COUNT - 1))
            {
                currentDirection.X = direction.X[0];
                currentDirection.Y = direction.Y[0];
                return;
            }

            currentDirection.X = direction.X[currentDirectionCount + 1];
            currentDirection.Y = direction.Y[currentDirectionCount + 1];
        }
Example #2
0
        public static void ChangeDirection(CurrentDirection currentDirection)
        {
            Directions direction = new Directions();
            int currentDirectionCount = 0;
            int DIRECTIONS_COUNT = 8;

            for (int i = 0; i < DIRECTIONS_COUNT; i++)
            {
                if (direction.X[i] == currentDirection.X && direction.Y[i] == currentDirection.Y)
                {
                    currentDirectionCount = i;
                    break;
                }
            }

            if (currentDirectionCount == (DIRECTIONS_COUNT - 1))
            {
                currentDirection.X = direction.X[0];
                currentDirection.Y = direction.Y[0];
                return;
            }

            currentDirection.X = direction.X[currentDirectionCount + 1];
            currentDirection.Y = direction.Y[currentDirectionCount + 1];
        }
Example #3
0
        public void ChangeDirection_Direction11_ShouldReturnNextDirection()
        {
            // Arrange
            CurrentDirection direction = new CurrentDirection(1, 1);

            // Act
            Directions.ChangeDirection(direction);
            CurrentDirection expectedDirection = new CurrentDirection(1, 0);

            // Assert
            Assert.IsTrue(expectedDirection.X == direction.X && expectedDirection.Y == direction.Y);
        }
        public static int[,] FillMatrix(int matrixDimension)
        {
            int[,] matrix = new int[matrixDimension, matrixDimension];
            int              fillingNumber    = 1;
            CurrentPosition  currentPosition  = new CurrentPosition(0, 0);
            CurrentDirection currentDirection = new CurrentDirection(1, 1);

            while (true)
            {
                matrix[currentPosition.X, currentPosition.Y] = fillingNumber;

                if (!CheckForEmptyCellInCurrentDirection(matrix, currentPosition))
                {
                    FindEmptyCell(matrix, currentPosition);

                    // Break if no more empty cells
                    if (currentPosition.X == 0 && currentPosition.Y == 0)
                    {
                        return(matrix);
                    }
                    // Will be positioned in the empty cell after the update
                    currentPosition.X--;
                    currentPosition.Y--;
                    currentDirection.X = 1;
                    currentDirection.Y = 1;
                }

                bool isInBoundariesX = 0 <= currentPosition.X + currentDirection.X && currentPosition.X + currentDirection.X < matrixDimension;
                bool isInBoundariesY = 0 <= currentPosition.Y + currentDirection.Y && currentPosition.Y + currentDirection.Y < matrixDimension;
                while (!isInBoundariesX || !isInBoundariesY || matrix[currentPosition.X + currentDirection.X, currentPosition.Y + currentDirection.Y] != 0)
                {
                    Directions.ChangeDirection(currentDirection);
                    isInBoundariesX = 0 <= currentPosition.X + currentDirection.X && currentPosition.X + currentDirection.X < matrixDimension;
                    isInBoundariesY = 0 <= currentPosition.Y + currentDirection.Y && currentPosition.Y + currentDirection.Y < matrixDimension;
                }
                currentPosition.X += currentDirection.X;
                currentPosition.Y += currentDirection.Y;
                fillingNumber++;
            }
        }
        public static int[,] FillMatrix(int matrixDimension)
        {
            int[,] matrix = new int[matrixDimension, matrixDimension];
            int fillingNumber = 1;
            CurrentPosition currentPosition = new CurrentPosition(0, 0);
            CurrentDirection currentDirection = new CurrentDirection(1, 1);
            while (true)
            {
                matrix[currentPosition.X, currentPosition.Y] = fillingNumber;

                if (!CheckForEmptyCellInCurrentDirection(matrix, currentPosition))
                {
                    FindEmptyCell(matrix, currentPosition);

                    // Break if no more empty cells
                    if (currentPosition.X == 0 && currentPosition.Y == 0)
                    {
                        return matrix;
                    }
                    // Will be positioned in the empty cell after the update
                    currentPosition.X--;
                    currentPosition.Y--;
                    currentDirection.X = 1;
                    currentDirection.Y = 1;
                }

                bool isInBoundariesX = 0 <= currentPosition.X + currentDirection.X && currentPosition.X + currentDirection.X < matrixDimension;
                bool isInBoundariesY = 0 <= currentPosition.Y + currentDirection.Y && currentPosition.Y + currentDirection.Y < matrixDimension;
                while (!isInBoundariesX || !isInBoundariesY || matrix[currentPosition.X + currentDirection.X, currentPosition.Y + currentDirection.Y] != 0)
                {
                    Directions.ChangeDirection(currentDirection);
                    isInBoundariesX = 0 <= currentPosition.X + currentDirection.X && currentPosition.X + currentDirection.X < matrixDimension;
                    isInBoundariesY = 0 <= currentPosition.Y + currentDirection.Y && currentPosition.Y + currentDirection.Y < matrixDimension;
                }
                currentPosition.X += currentDirection.X;
                currentPosition.Y += currentDirection.Y;
                fillingNumber++;
            }
        }
Example #6
0
 public void CurrentDirection_InValidInputY_ShouldTrowException()
 {
     CurrentDirection currentDirection = new CurrentDirection(1, 2);
 }