我不知道如何確保隨機迷宮可以從右側的入口到左側的出口沒有任何阻塞路徑。這是我迄今爲止的代碼。大家可以給我一個提示或算法來實現簡單的迷宮(進入/退出)嗎?謝謝! P/S我的問題是迷宮發生器不保證路徑退出......(被卡住)C中的隨機迷宮發生器
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 12
void mazeGenerator(char [][SIZE]);
int main(void)
{
char maze[SIZE][SIZE];
srand((unsigned int)time(NULL));
mazeGenerator(maze);
return 0;
}
void mazeGenerator(char a[SIZE][SIZE])
{
size_t row,column = 0, r;
// initialize '#' to all positions of left-hand wall
for (row = 0; row < SIZE; ++row)
{
a[row][column] = '#';
}
// initialize '#' to all positions of left-hand wall
for (row = 0; row < SIZE; ++row)
{
a[row][SIZE - 1] = '#';
}
// initialize '.' to left-hand wall random positions from 1 -> 10
row = rand() % 11 + 1;
a[row][0] = '.';
// initialize '.' to right-hand wall random positions from 1 -> 10
row = rand() % 11 + 1;
a[row][SIZE - 1] = '.';
// intialize '#' to all positions of top maze
for (column = 1; column < SIZE - 1; ++column)
{
a[0][column] = '#';
}
// intialize '#' to all positions of bottom maze
for (column = 1; column < SIZE - 1; ++column)
{
a[SIZE - 1][column] = '#';
}
// print maze
puts("");
puts("** Maze Generator by Huy Le **\n");
for (row = 0; row < SIZE; ++row)
{
for (column = 0; column < SIZE; ++column)
{
printf_s("%2c",a[row][column]);
}
puts("");
}
puts("");
}
只是一個想法,你爲什麼不先產生入口和出口之間的路徑,然後你建立的牆壁,限制你所建的小路上沒有牆嗎? – Inox
我的確有同樣的想法,但可以創建一條直線,看起來不自然。 –