Risposte:
Esistono molti modi per creare labirinti. C'è un grande elenco di loro e le loro descrizioni qui: http://www.astrolog.org/labyrnth/algrithm.htm
Penso di aver usato quello descritto in "Perfetto".
Preferisco i labirinti strettamente avvolti che crea l'algoritmo di Kruskal.
La descrizione standard dell'algoritmo di Kruskal è inappropriata in quanto non riesce a distinguere le posizioni nel grafico dai gruppi di posizioni, facendo affidamento su un gioco di parole sulla scelta della struttura di dati, portando a ambiguità di descrizione che confondono i principianti. Pertanto rifiuto la termonologia di Kruskal.
Userò i seguenti termini:
E da quelli otteniamo:
Wikipedia ha una grande risorsa sulla generazione di labirinti . Ho usato l' algoritmo di prim randomizzati con grandi risultati. L'algoritmo di divisione sembra interessante ma non l'ho mai usato.
Ecco un esempio di Wikipedia di prim al lavoro.
Un modo semplice è fare un elenco delle pareti nord e delle pareti ovest, quindi permutarle. Dai un numero a ogni stanza. Quindi fai esplodere una delle pareti dell'elenco, purché le due stanze non abbiano lo stesso numero, quindi propaga uno dei numeri a tutte le altre stanze con lo stesso numero. Continua finché non finisci i muri. Questo funziona per labirinti rettangolari o, in realtà, per qualsiasi altro labirinto in cui è possibile fornire un elenco di "stanze potenzialmente collegate". Inoltre, è abbastanza semplice da programmare.
Vorrei anche dare un'occhiata ad alcuni degli algoritmi utilizzati nello sviluppo di Roguelike. C'è una buona risorsa di partenza nel Rogue Basin
C'è una buona corsa qui: https://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/
I passaggi di base sono stati:
Mi hai chiesto quale ho usato, quindi mi assicurerò di rispondere. Ho usato l' algoritmo di Backtracker ricorsivo nel mio gioco del labirinto su Rootbeer Games .
Questa è la prova che ho usato l'algoritmo, per favore non vederlo come una pubblicità del mio lavoro.