Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Автоматизована система побудови лабіринту і пошуку виходу з нього

Реферат Автоматизована система побудови лабіринту і пошуку виходу з нього





0]=lab [xx, yy, 0];// Об'єднаємо безлічі

}//створюємо кордон

{[xx + 1, yy, 0]=1;

lab [xx + 1, yy + 1, 0]=1; [xx + 1, yy - 1, 0]=1;

}

}

}

//пройдемо зліва направо по рядку і розставимо нижні межі

for (i=0; i lt; (xcells - 1)/2; i ++)

{= i * 2 + 1;=lab [xx, yy, 0];

//порахуємо кількість осередків без нижньої межі, що належать до поточного безлічі

cn=0; (k=0; k lt; (xcells - 1)/2; k ++)

{= k * 2 + 1; ((lab [x1, yy, 0] == tmn) amp; amp; (lab [x1, yy + 1, 0] == 0))

{++;

}

} (cn gt; 1)//якщо в поточному безлічі осередок з нижньою межею не одна (більше)

{

//вирішимо створювати нижню межу між осередками чи ні

tt=rnd.Next (0, 100); (tt gt; hor_rating)//не створимо кордон

{[xx, yy + 1, 0]=0;

}//створюємо кордон

{[xx, yy + 1, 0]=1; [xx + 1, yy + 1, 0]=1;

lab [xx - 1, yy + 1, 0]=1;

}

}

}

//скопіюємо поточний рядок в наступну

for (i=0; i lt; (xcells - 1)/2; i ++)

{= i * 2 + 1; [xx, yy + 2, 0]=lab [xx, yy, 0];// Скопіюємо осередку

lab [xx, yy + 3, 0]=lab [xx, yy + 1, 0];// Скопіюємо нижні межі [xx + 1, yy + 2, 0]=0;// Видалимо всі праві межі (lab [xx, yy + 3, 0] == 1)//якщо осередок має нижню межу

{[xx, yy + 2, 0]=0;// Видалимо її з безлічі

} [xx, yy + 3, 0]=0;// Видалимо всі нижні межі

}

}

//обробка останнього рядка=ycells - 2;

//скопіюємо поточний рядок в наступну (i=0; i lt; (xcells - 1)/2; i ++)

{= i * 2 + 1; [xx, yy, 0]=lab [xx, yy - 2, 0];// Скопіюємо осередку [xx + 1, yy, 0]=lab [xx + 1, yy - 2, 0];// Скопіюємо праві межі [xx, yy + 1, 0]=lab [xx, yy - 1, 0];// Скопіюємо нижні межі (lab [xx, yy + 1, 0] == 1)//якщо осередок має нижню межу

{[xx, yy, 0]=++ mn;// Віднесемо її до нового безлічі

}

} (i=0; i lt; (xcells - 1)/2; i ++)

{= i * 2 + 1;

//якщо поточна комірка і осередок праворуч члени різних множин

if (lab [xx, yy, 0]!=lab [xx + 2, yy, 0])

{

//видалимо праву межу [xx + 1, yy, 0]=0;

//об'єднаємо безлічі=lab [xx + 2, yy, 0];

tt=lab [xx, yy, 0];=0; (k=0; k lt; (xcells - 1)/2; k ++)

{= k * 2 + 1; (lab [x1, yy, 0] == tmn)

{[x1, yy, 0]=tt;

}

}

}

}

//очистимо проходи (j=0; j lt; (ycells - 1)/2; j ++)

{= j * 2 + 1; (i=0; i lt; (xcells - 1)/2; i ++)

{= i * 2 + 1; [xx, yy, 0]=0;

}

}

//відновимо кордону по периметру (i=0; i lt; xcells; i ++)

{[i, 0, 0]=1; [i, ycells - 1, 0]=1;

} (i=0; i lt; ycells; i ++)

{[0, i, 0]=1; [xcells - 1, i, 0]=1;

} [xstart - 1, ystart - 1, 0]=2; [xstop - 1, ystop - 1, 0]=3;

//з сусідньою (з входом) осередки приберемо стінку

if (xstart == 1) lab [xstart, ystart - 1, 0]=0; (ystart == 1) lab [xstart - 1, ystart, 0]=0; (xstart==xcells) lab [xstart - 2, ystart - 1, 0]=0; (ystart == ycells) lab [xstart - 1, ystart - 2, 0]=0;

//з сусідньою (з виходом) осередки приберемо стінку

if (xstop == 1) lab [xstop, ystop - 1, 0]=0; (ystop == 1) lab [xstop - 1, ystop, 0]=0; (xstop==xcells) lab [xstop - 2, ystop - 1, 0]=0; (ystop == ycells) lab [xstop - 1, ystop - 2, 0]=0;

}

//Хвильовий алгоритм

//іпользуются в процесі пошуку виходу з лабіринту

public void Volna ()

{i, j;

//елементи масиву lab [i, j, 1] містять значення довжини хвилі лабіринту

//ініціалізіруем їх значеннями - 1 (i=0; i lt; xcells; i ++)

{(j=0; j lt; ycells; j ++)

Назад | сторінка 14 з 18 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Практична обробка безлічі даних, що представляють собою масив покажчиків на ...
  • Реферат на тему: Подільність безлічі чисел та їх властивості
  • Реферат на тему: Прокурор у цивільному процесі: роль, межі участі, проблемні аспекти
  • Реферат на тему: Межі
  • Реферат на тему: Межі функцій