Exemplo n.º 1
0
        /// <summary>
        /// Generates a square maze using Prim's Algorithm
        /// </summary>
        public void Generate()
        {
            Random random = Utils.Random;

            Grid = Utils.InitializeMatrix(m_size, WALL);

            Tuple <int, int> startingCoords = new Tuple <int, int>(random.Next(m_size), random.Next(m_size));

            Grid[startingCoords.Item1][startingCoords.Item2] = PASSAGE;

            List <DoubleCell> frontier = GetNeighborCells(startingCoords);

            while (frontier.Count > 0)
            {
                DoubleCell curCell = frontier[random.Next(frontier.Count)];

                if (Grid[curCell.X2][curCell.Y2] == WALL)
                {
                    Grid[curCell.X1][curCell.Y1] = PASSAGE;
                    Grid[curCell.X2][curCell.Y2] = PASSAGE;

                    frontier.AddRange(GetNeighborCells(curCell.Cell2).Where(w => GetCell(w.Cell2) == WALL));
                }

                frontier.Remove(curCell);
            }
        }
        private List <CellInfo> GetDoubleCellInfo(int cellCount)
        {
            for (int i = 0; i < cellCount; i++)
            {
                DoubleCell doubleCell = new DoubleCell(0.001);
                Global.LocalStorage.SaveDoubleCell(doubleCell);
            }
            var             cells        = Global.LocalStorage.GetEnumerator();
            List <CellInfo> cellInfoList = new List <CellInfo>();

            while (cells.MoveNext())
            {
                cellInfoList.Add(cells.Current);
            }
            return(cellInfoList);
        }