private void Setup() { stack = new Stack <MyPanel>(); panels = new MyPanel[rows, cols]; for (int i = 0; i < cols; i++) { for (int j = 0; j < rows; j++) { panels[i, j] = new MyPanel(); panels[i, j].Size = new Size(table.Height / table.ColumnCount, table.Width / table.RowCount); panels[i, j].BackColor = Color.Black; table.Controls.Add(panels[i, j]); table.SetCellPosition(panels[i, j], new TableLayoutPanelCellPosition(i, j)); panels[i, j].Margin = new Padding(1); panels[i, j].col = i; panels[i, j].row = j; } } cur = panels[0, 0]; cur.visit(); totalVisited++; }
private void timer1_Tick(object sender, EventArgs e) { cur.BackColor = Color.Green; if (totalVisited < cols * rows) { Neighbours(); if (n.Count > 0) { Random rnd = new Random(); int r = rnd.Next(n.Count); MyPanel chosen = n[r]; stack.Push(cur); DeleteWall(chosen); cur = chosen; cur.visit(); totalVisited++; } else { cur = stack.Pop(); cur.BackColor = Color.Red; } } }