2012-09-01 19 views
10

Ciao Ho lavorato su un algoritmo per generare un labirinto di pacman casuale. Ho visto un paio di articoli ma non ho potuto rompere la logica. Sto usando prima la ricerca dell'algoritmo del labirinto e poi rispolverò il labirinto per rendere ogni labirinto simmetrico. Sto incontrando problemi come la pulizia dei vicoli ciechi. Se ciò non è possibile, tenterei anche un altro algoritmo se qualcuno ha la propria logica per generare il labirinto casuale. Qualsiasi aiuto è apprezzato. GrazieCome creare un labirinto di pacman casuale

+0

Cosa intendi con "pacman labir"? –

+0

Sto tentando di creare il mio clone di pacman e mi piacerebbe creare un "labirinto di pacman" simile a questa immagine http://ryangenno.tripod.com/images/MSpacmaze4.gif. Mi piacerebbe generare questo a caso –

+1

So che questa è una vecchia domanda, ma controlla questo sito se hai problemi, mi ha aiutato un sacco. http://www.contralogic.com/2d-pac-man-style-maze-generation/ – user1762507

risposta

2

Mi piacerebbe fare una passeggiata casuale da dfs nell'area pulita (senza muri, in n * n matrice di 0), dopo di che riempire le aree che non sono coperte da una passeggiata casuale (renderle come muro), questo potrebbe anche causare spazi inutilizzati, ma questa garanzia di fare una lunga passeggiata. è possibile impostare la dimensione della camminata arbitraria (ad esempio quando la dimensione della camminata è arrivata a (n^2)/2, è possibile interrompere la camminata).

4

Ho risolto il mio problema e ho voluto condividere. Per i principianti, ho impostato la prima riga e la prima colonna e l'ultima colonna come ostacolo a muro, quindi ho impostato un percorso sulla seconda colonna, la penultima e la seconda fila in modo che circondi il muro esterno. Inoltre, tieni presente che sto creando solo il 50% del labirinto, quindi quando ho finito copio il labirinto in modo che entrambe le parti siano uguali. Poi ho creato una sezione centrale circondata da un muro per l'area in cui i fantasmi si generano. Quindi qualsiasi parte del labirinto che non è stata guardata I ha generato percorsi usando l'algoritmo di prima profondità della ricerca. Dopo che questo è stato fatto, so che in un labirinto di pacman non ci sono vicoli ciechi. Quello che ho fatto è stato controllare ogni cellula che fa parte del percorso che pacman può percorrere. Se una qualsiasi cella ha solo una cella confinante, allora è un vicolo cieco. Se è un vicolo cieco vedi se può essere connesso ad un altro percorso. Se non si imposta il vicolo cieco come un muro e controllare di nuovo il labirinto per eventuali vicoli ciechi. Dopo aver seguito questi passaggi, avrai un labirinto casuale privo di vicoli ciechi che ricorda il tipico labirinto di pacman.

2

Ho creato un generatore di labirinti PacMan casuale molto tempo fa sul C = 64 usando prima la profondità e l'eliminazione dei vicoli ciechi, ma recentemente sono stato sfidato dal mio amico a rifarlo. Trovato un modo migliore. In sostanza, ho creato una griglia di stanze con ogni direzione che ha una porta aperta (chiusa sul bordo tranne dove va il tunnel), quindi inizi a chiudere le porte a caso secondo la regola che non ci dovrebbe mai essere più di 1 porta chiusa in una stanza adiacente se 2 porte sono chiuse, una terza creerebbe un vicolo cieco. Continua a farlo in modo casuale finché tutte le porte potenziali non sono chiuse o aperte dalla regola.

Mirroring era un po 'più di lavoro, ma ho iniziato con le basi e appena costruito le regole per consentire il mirroring, casa fantasma posizione, lunghezza minima della parete (nessun singolo rotatorie a parete) e la massima lunghezza del muro, ecc ...

+0

Apparentemente, hai provato ad aggiornare la tua risposta usando un account utente diverso, e la [modifica suggerita] (http: // StackOverflow. com/review/suggested-editor/1287465) è stato respinto. Perché non usare il tuo account originale? – bfavaretto

+0

Il link è ora morto – Valdrinit