示例#1
0
 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++;
 }
示例#2
0
 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;
         }
     }
 }