private void BuildMaze()

in Games/Maze/GamePage.xaml.cs [366:431]


        private void BuildMaze()
        {
            _solutionTimer.Stop();
            _cellCreationTimer.Stop();
            _openCellTimer.Stop();

            _breadCrumbs.Clear();
            ClearBreadCrumbs();

            int remainingHeight = (int)(this.ActualHeight - Toolbar.ActualHeight) - (int)(MazeBorder.Margin.Bottom + MazeBorder.Margin.Top);
            _cellSize = remainingHeight / _numRows;
            _numCols = (int)((this.ActualWidth - (MazeBorder.Margin.Left + MazeBorder.Margin.Right)) / _cellSize);

            _maze = _mazeCreator.Create(_numRows, _numCols);
            _isMazeSolved = false;

            _curRow = _curCol = 0;

            if (_curButton != null)
            {
                _curButton.Content = null;
                _curButton = null;
            }
            if (_targetButton != null)
            {
                _targetButton.Content = null;
                _targetButton = null;
            }
            MazeGrid.Children.Clear();
            MazeGrid.RowDefinitions.Clear();
            MazeGrid.ColumnDefinitions.Clear();

            MazeTargetsGrid.Children.Clear();
            MazeTargetsGrid.RowDefinitions.Clear();
            MazeTargetsGrid.ColumnDefinitions.Clear();

            for (int i = 0; i < _numRows; i++)
            {
                MazeGrid.RowDefinitions.Add(new RowDefinition());
                MazeTargetsGrid.RowDefinitions.Add(new RowDefinition());
            }
            for (int i = 0; i < _numCols; i++)
            {
                MazeGrid.ColumnDefinitions.Add(new ColumnDefinition());
                MazeTargetsGrid.ColumnDefinitions.Add(new ColumnDefinition());
            }

            MazeGrid.Width = _cellSize * _numCols;
            MazeTargetsGrid.Width = _cellSize * _numCols;

            _mazeCells.Clear();
            for (int i = 0; i < _numRows; i++)
            {
                for (int j = 0; j < _numCols; j++)
                {
                    _mazeCells.Add(new Point(j, i));
                    AddTargetToMaze(i, j);
                }
            }

            _mazeCells = ShuffleMazeCells(_mazeCells);

            _currentMazeCell = 0;

            _cellCreationTimer.Start();
        }