py=1; }//Якщо напрямок вниз, коригуємо зміщення (w0 == 4) {px=- 1; py=0; }//Якщо напрямок вліво, коригуємо зміщення (can (tx + px, ty + py)) break;// Якщо в осередок зі зміщенням можливий перехід, то покидаємо ціклw0--;// Інакше повертаємося проти годинникової стрілки (w0 lt; 1) w0=4;// Якщо напрямок пішло з діапазону 1-4 - повертаємо його в цей діапазон
} while (w0!=way);// Поки все навкруги не переглянули (can (tx + px, ty + py))//якщо в осередок зі зміщенням можливий перехід
{(lab [tx + px, ty + py, 1] gt; 0)
{(lab [tx, ty, 1] gt; lab [tx + px, ty + py, 1])
{[tx, ty, 1]=0;=lab [tx + px, ty + py, 1];
}
}
{++; [tx + px, ty + py, 1]=len;
}
//коригуємо поточне положення персонажа=tx + px;=ty + py;
//lab [tx, ty, 1]=1;// Пометим слід від персонажа
//коригуємо поточний напрямок руху персонажа=w0 + 1; (way gt; 4) way=1;// Якщо напрямок пішло з діапазону 1-4 - повертаємо його в цей діапазон
for (int i=1; i lt; xcells - 1; i ++)
{(int j=1; j lt; ycells - 1; j ++)
{(lab [i, j, 1] gt; len) lab [i, j, 1]=0;
}
} true;// Так, наступний крок зроблено успішно
} return false;// Нет, наступний крок зробити не вдалося
}
//Збереження лабіринту в файлvoid Save ()
{ts=0; saveFileDialog1=new SaveFileDialog ();// Створюємо системний діалог збереження файлу
//задаємо йому необхідні параметри (властивості)
saveFileDialog1.Filter= Labyrint files (* .lab) | * .lab raquo ;;. FilterIndex=2; .RestoreDirectory=true; (saveFileDialog1.ShowDialog () == DialogResult.OK) //якщо файл для запису обраний успішно
{sw=File.CreateText (saveFileDialog1.FileName);// Створюємо файл для запису
//записуємо основну інформацію про лабірінте.WriteLine (Convert.ToString (xcells));// Осередків по горизонталі
sw.WriteLine (Convert.ToString (ycells));// Осередків по вертікалі.WriteLine (Convert.ToString (xstart));// Координати стартової позіціі.WriteLine (Convert.ToString (ystart));// Координати стартової позіціі.WriteLine (Convert.ToString (xstop));// Координати кінцевої позіціі.WriteLine (Convert.ToString (ystop));// Координати кінцевої позиції
//записуємо стан кожної комірки (int i=0; i lt; xcells; i ++)
{(int j=0; j lt; ycells; j ++)
{. WriteLine (Convert.ToString (lab [i, j, 0])); +=lab [i, j, 0];
}
}. WriteLine (Convert.ToString ((xcells + ycells + xstart + ystart + xstop + ystop) + ts));// Контрольна сума
sw.Close ();// Закриваємо файл
}
}
//Читання лабіринту з файлаBoolean Open ()
{openFileDialog1=new OpenFileDialog ();// Створюємо системний діалог вибору файлу
//задаємо йому необхідні параметри (властивості)
openFileDialog1.Filter= Labyrint files (* .lab) | * .lab raquo ;;. FilterIndex=2; .RestoreDirectory=true; (openFileDialog1.ShowDialog () == DialogResult.OK) //якщо файл обраний успішно
{cs=0; ts=0;
{sr=File.OpenText (openFileDialog1.FileName);// Відкриваємо файл для читання
//читаємо основну інформацію про лабіринті=Convert.ToInt32 (sr.ReadLine ());
ycells=Convert.ToInt32 (sr.ReadLine ());=Convert.ToInt32 (sr.ReadLine ());=Convert.ToInt32 (sr.ReadLine ());=Convert.ToInt32 ( sr.ReadLine ());=Convert.ToInt32 (sr.ReadLine ());
//читаємо стан кожної комірки (int i=0; i lt; xcells; i ++)
{(int j=0; j lt; ycells; j ++)
{[i, j, 0]=Convert.ToInt32 (sr.ReadLine ()); +=lab [i, j, 0];
}
}=Convert.ToInt32 (sr.ReadLine ()) ;. Close ();// Закриваємо файл
} (Exception e)
{. Show ( Помилка читання лабіринту. Виберіть інший файл. ); false;
}
//контроль цілісності ((xcells == 0) || (ycells == 0) || (xstart == 0) || (ystart == 0) || (xstop == 0 ) || (ystop == 0))
{. Show ( Помилка контролю цілісності лабіринту. Виберіть інший файл. ); false;
}=cs - (xcells + ycells + xstart + ystart + xstop + ystop) -ts;
if...