Exemple #1
0
        private void LabirintPrim(Color floorColor, Color wallColor, Patch start)
        {
            foreach (Patch p in netTK.GetPatchesAsList())
            {
                p.SetColor(wallColor);
            }
            start.SetColor(floorColor);
            List <Patch> walls = start.Neighbours90WithColor(wallColor);
            Random       rnd   = new Random();

            while (walls.Count() != 0)
            {
                Patch wall = walls[rnd.Next(walls.Count)];

                if (wall.Neighbours90WithColor(floorColor).Count == 1)
                {
                    wall.SetColor(floorColor);
                    foreach (Patch p in wall.Neighbours90WithColor(wallColor))
                    {
                        walls.Add(p);
                    }
                }

                walls.Remove(wall);
            }
        }