Exemplo n.º 1
0
 private void DeleteWall(MyPanel p)
 {
     if (cur.col == p.col)
     {
         if (cur.row < p.row)
         {
             p.Margin   = new Padding(p.Margin.Left, 0, p.Margin.Right, p.Margin.Bottom);
             cur.Margin = new Padding(cur.Margin.Left, cur.Margin.Top, cur.Margin.Right, 0);
         }
         else
         {
             p.Margin   = new Padding(p.Margin.Left, p.Margin.Top, p.Margin.Right, 0);
             cur.Margin = new Padding(cur.Margin.Left, 0, cur.Margin.Right, cur.Margin.Bottom);
         }
     }
     else
     {
         if (cur.col < p.col)
         {
             p.Margin   = new Padding(0, p.Margin.Top, p.Margin.Right, p.Margin.Bottom);
             cur.Margin = new Padding(cur.Margin.Left, cur.Margin.Top, 0, cur.Margin.Bottom);
         }
         else
         {
             p.Margin   = new Padding(p.Margin.Left, p.Margin.Top, 0, p.Margin.Bottom);
             cur.Margin = new Padding(0, cur.Margin.Top, cur.Margin.Right, cur.Margin.Bottom);
         }
     }
 }
Exemplo n.º 2
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++;
 }
Exemplo n.º 3
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;
         }
     }
 }