توليد متاهات من مختلف الأشكال والأحجام التعسفية
يمكن لمولد المتاهة إنشاء متاهات مستطيلة أو سداسية أو على شكل قرص العسل أو متاهات دائرية. يمكن إنشاء المتاهة باستخدام خوارزمية كروسكال، أو البحث بالعمق أولاً، أو البحث بالعرض أولاً، أو المشي العشوائي الذي تم مسحه بالحلقة، أو خوارزمية بريم. يمكن عرض المتاهات بتنسيق svg أو png (باستخدام gnuplot كوسيط في الحالة الأخيرة).
يستخدم منشئ المتاهة gnuplot (مع استدعاء النظام gnuplot
) لعرض متاهات png. لذا تأكد من تثبيت gnuplot 5.0+
مع دعم محطة pngcairo
وأنه موجود في المسار إذا كنت ترغب في استخدام png.
الكود مكتوب بلغة C++ 11، وستحتاج إلى مترجم C++ ليس قديمًا جدًا لإنشائه.
cd src; make
Usage: mazegen [--help] [-m <maze type>] [-a <algorithm type>] [-s <size> | -w <width> -h <height>] [-t <output type] [-o <output prefix>] Optional arguments --help Show this message and exit -m Maze type 0: Rectangular (default) 1: Hexagonal (triangular lattice) 2: Honeycomb 3: Circular 4: Circular (triangular lattice) 5: User-defined -a Algorithm type 0: Kruskal's algorithm (default) 1: Depth-first search 2: Breadth-first search 3: Loop-erased random walk 4: Prim's algorithm -s Size (non-rectangular mazes, default: 20) -w,-h Width and height (rectangular maze, default: 20) -t Output type 0: svg output (default) 1: png output using gnuplot (.plt) intermediate -o Prefix for .svg, .plt and .png outputs (default: maze)
يتم رسم الأقواس الموجودة في المتاهات الدائرية كمنحنيات حدودية في gnuplot، ويمكن أن يستغرق تنسيق png وقتًا طويلاً لعرض المتاهات الكبيرة.