"> {[i, j, 1]=- 1;
}
} [xstart - 1, ystart - 1, 1]=0;// На вході в лабіринт довжина хвилі=0lastwave=- 1;// Номер поточної волниcou=1;// Кількість осередків, які накрила попередня волнаfound=false;// Хвиля дістала до виходу? (! Found amp; amp; (cou gt; 0))//поки хвиля не дійшла до виходу і поки попередня хвиля накрила хоч скільки-небудь осередків
{= 0;// Кількість осередків, які накрила хвиля
lastwave ++;// Номер поточної хвилі (i=0; i lt; xcells; i ++)
{(j=0; j lt; ycells; j ++)
{(lab [i, j, 1] == lastwave)//опрацюємо тільки осередки, які накрило попередньою хвилею
{
//якщо
//існує осередок звірку від поточної
//ніяка попередня хвиля її не накривати
//і в цій осередку не стіна
if ((j gt; 0) amp; amp; (lab [i, j - 1, 1] lt; 0) amp; amp; (lab [i, j - 1, 0] !=1))
{[i, j - 1, 1]=lastwave + 1;// Накриваємо цю клітинку наступною хвилею ++;// Кількість осередків, які накрила хвиля
//якщо накрита хвилею осередок це вихід, то включаємо ознака того, що хвиля досягла виходу
if (lab [i, j - 1, 0] == 3) found=true;
//на осередку напишемо номер хвилі, якій її накрило
/// gfr.DrawString (Convert.ToString (lastwave + 1), new Font ( Tahoma raquo ;, 8), Brushes.Gray, new Point ((int) i * sizecell + sizecell/3, (int) (j - 1) * sizecell + sizecell/3));
}
//якщо
//існує осередок знизу від поточної
//ніяка попередня хвиля її не накривати
//і в цій осередку не стіна
if ((j lt; ycells - 1) amp; amp; (lab [i, j + 1, 1] lt; 0) amp; amp; (lab [i, j + 1, 0]!=1))
{[i, j + 1, 1]=lastwave + 1;// Накриваємо цю клітинку наступною хвилею ++;// Кількість осередків, які накрила хвиля
//якщо накрита хвилею осередок це вихід, то включаємо ознака того, що хвиля досягла виходу
if (lab [i, j + 1, 0] == 3) found=true;
//на осередку напишемо номер вілни, якій її накрило
/// gfr.DrawString (Convert.ToString (lastwave + 1), new Font ( Tahoma raquo ;, 8), Brushes.Gray, new Point ((int) i * sizecell + sizecell/3, (int) (j + 1) * sizecell + sizecell/3));
}
//якщо
//існує осередок зліва від поточної
//ніяка попередня хвиля її не накривати
//і в цій осередку не стіна
if ((i gt; 0) amp; amp; (lab [i - 1, j, 1] lt; 0) amp; amp; (lab [i - 1, j, 0] !=1))
{[i - 1, j, 1]=lastwave + 1;// Накриваємо цю клітинку наступною хвилею ++;// Кількість осередків, які накрила хвиля
//якщо накрита хвилею осередок це вихід, то включаємо ознака того, що хвиля досягла виходу
if (lab [i - 1, j, 0] == 3) found=true;
//на осередку напишемо номер хвилі, якій її накрило
/// gfr.DrawString (Convert.ToString (lastwave + 1), new Font ( Tahoma raquo ;, 8), Brushes.Gray, new Point ((int) (i - 1) * sizecell + sizecell/3, (int) j * sizecell + sizecell/3));
}
//якщо
//існує осередок праворуч від поточної
//ніяка попередня хвиля її не накривати
//і в цій осередку не стіна
if ((i lt; xcells - 1) amp; amp; (lab [i + 1, j, 1] lt; 0) amp; amp; (lab [i + 1, j, 0]!=1))
{[i + 1, j, 1]=lastwave + 1;// Накриваємо цю клітинку наступною хвилею ++;// Кількість осередків, які накрила хвиля
//якщо накрита хвилею осередок це вихід, то включаємо ознака того, що хвиля досягла виходу
if (lab [i + 1, j, 0] == 3) found=true;
//на осередку напишемо номер хвилі, якій її накрило
/// gfr.DrawString (Convert.ToString (lastwave + 1), new Font ( Tahoma raquo ;, 8), Brushes.Gray, new Point ((int) (i + 1) * sizecell + sizecell/3, (int) j * sizecell + sizecell/3));
}
}
}
}
/// pictureBox1.Refresh ();// Обновити зображення pictureBox1 на формі
/// Thread.Sleep (100);// Зробимо паузу на вказану кількість мілісекунд
} (! found)//не найден вихід - ніяка воолна не накр...