для знаходження путіleaf {
// точка, її координати - це номер кімнати
// по горизонталі і вертікаліid;
// скільки грошей накопичується до цієї комнатиmone;
// покажчик на попередню кімнату * parent;
// покажчики на сусідні кімнати ** kids;
// конструктор вузла () {
// виділяється пам'ять для сусідніх кімнат = new leaf * [4];
for (int i = 0; i <4; i + +) [i] = NULL;
} IsVisited (int x, int y, leaf * obj); SetNewLeaf (leaf * obj, int n); Tracing (leaf * obj, int n); GrowTree (TPoint p, leaf * obj );
};
// розмірність лабірінтаint N = 15;
// масив з комнатa [N] [N];
// максимальне значення накопичених сокровіщmax = 0;
// режим відображення інформацііinfo = 0;
// покажчик на корінь пошукового дерева * root = NULL;
// точки - координати кімнат входу і виходаA, B;
// чи був запущений процес пошуку путіprocess = false;
// чи був перерваний процес пошуку путіnewprocess = false;
// графічний буфер для відтворення лабіринту
Graphics :: TBitmap * buffer = new (Graphics :: TBitmap);
// ---------------------------------------- -----------------------------------
__fastcall TForm2 :: TForm2 (TComponent * Owner)
: TForm (Owner)
{
}
// ---------------------------------------- -----------------------------------
// функція створення лабірінтаCreateLabirint ()
{
// створюємо скрізь стіни (int i = 0; i <= N; i + +) (int j = 0; j <= N; j + +) {[i] [j]. stena = true; [i] [j]. sokrovihe = random (99) +1; [i] [j]. number = 0;}
// поточна кімната і напрям двіженіяx, y, c;
// робимо N/2 циклів створення коридорів (int i = 0; i <= N/2; i + +) {
// вибираємо випадкову кімнату всередині лабіринту = random (N-2) +1; = random (N-2) +1;
// вибираємо випадкове напрям руху = random (4);
// вибираємо випадкове кількість поворотів коридору
for (int d = random (3) +2; d> = 0; d -) {
// вибираємо випадкове кількість кімнат до повороту
for (int k = random (3) +2; k> = 0; k -) {(c) {
// переходимо в одну з чотирьох сторін
case 0: x + +; break; 1: y + +; break; 2: x -; break; 3: y -; break;}
// самі крайні комнатами не робимо (x <= ...