Hola He estado trabajando en un algoritmo para generar un laberinto de pacman aleatorio. He visto un par de artículos pero no pude desglosar la lógica. Estoy usando la primera búsqueda de profundidad del algoritmo laberinto y luego reflejo el laberinto para simétrico cada laberinto. Me estoy encontrando con problemas como limpiar los callejones sin salida. Si esto no es posible, también intentaría otro algoritmo si alguien tiene su propia lógica para generar el laberinto aleatorio. Cualquier ayuda es apreciada. GraciasCómo crear un laberinto de pacman aleatorio
Respuesta
Me gustaría hacer una caminata aleatoria por dfs en el área limpia (sin ninguna pared, en n * n matriz de 0), después de eso llenan las áreas que no están cubiertas por la caminata aleatoria (hacerlas como pared), esto también podría causar espacios no utilizados, pero esto garantiza tener una larga caminata. puede establecer el tamaño de caminata arbitraria (por ejemplo, cuando su tamaño de caminata llegó a (n^2)/2, podría detener la caminata).
Resolví mi problema y quería compartir. Para empezar, configuré la fila superior y la primera columna y la última columna como un obstáculo de pared, luego establecí un camino en la segunda columna, de la penúltima a la segunda fila para que rodee la pared exterior. También ten en cuenta que solo estoy creando el 50% del laberinto, así que cuando termine copio el laberinto para que ambos lados estén iguales. Luego creé una sección central rodeada por una pared para el área donde aparecen los fantasmas. Entonces, cualquier parte del laberinto que no se haya analizado generé rutas usando el primer algoritmo de búsqueda de profundidad. Después de hacer esto, sé que en un laberinto de pacman no hay callejones sin salida. Lo que hice fue verificar cada celda que es parte del camino que pacman puede recorrer. Si alguna celda tiene solo 1 celda contigua, entonces es un callejón sin salida. Si es un callejón sin salida mira si puede conectarse a otra ruta. Si no, establece el callejón sin salida como una pared y revisa el laberinto de nuevo en busca de callejones sin salida. Después de seguir estos pasos, tendrás un laberinto aleatorio sin callejones sin salida que se asemeja al típico laberinto de pacman.
Creé un generador de laberintos PacMan al azar hace mucho tiempo en la C = 64 usando la profundidad primero y la eliminación de callejones sin salida, pero recientemente mi amigo me desafió a hacerlo nuevamente. Encontré una mejor manera. Échale un vistazo al my site
Esencialmente, creé una grilla de habitaciones con cada dirección teniendo una puerta abierta (cerrada en el borde excepto donde va el túnel), luego empiezo a cerrar las puertas al azar de acuerdo con la regla de que nunca ser más de 1 puerta cerrada en una habitación contigua si se cierran 2 puertas, una tercera crearía un callejón sin salida. Solo sigue haciendo esto al azar hasta que todas las puertas potenciales estén cerradas o abiertas por la regla.
La duplicación fue un poco más laboriosa, pero comencé con los conceptos básicos y simplemente construí las reglas para permitir la creación de reflejos, la ubicación de la casa fantasma, la longitud mínima de pared (sin rotondas amuralladas) y la longitud máxima de pared, etc.
Aparentemente, trataste de actualizar tu respuesta usando una cuenta de usuario diferente, y la [edición sugerida] (http: // stackoverflow. com/review/suggested-edits/1287465) fue rechazado. ¿Por qué no usar tu cuenta original? – bfavaretto
El enlace está ahora muerto – Valdrinit
- 1. laberinto Pacman en Java
- 2. creé un pacman modificado, ¿cómo hacerlo respirar?
- 3. En Pacman, ¿los fantasmas eligen caminos independientes para encontrar pacman?
- 4. Algunas preguntas con pacman path finding
- 5. Cómo crear números aleatorios únicos de un generador aleatorio dado
- 6. Estructura de datos para representar un laberinto
- 7. obtener rata fuera de un laberinto
- 8. ¿Cómo puedo crear un BigDecimal aleatorio en Java?
- 9. Cómo crear un flotante aleatorio en Objective-C?
- 10. ¿Solución no exponencial al problema del laberinto?
- 11. Algoritmo de identificación de ruta para Pacman
- 12. Usando una pila para atravesar y resolver un laberinto - Java
- 13. Estructura de datos para un mundo aleatorio
- 14. Optimal algoritmo de generación de laberinto multijugador
- 15. Algoritmo de resolución de laberinto en C++
- 16. Cómo ver las notas de la versión/changelog con pacman
- 17. ¿Cómo restablecer un motor de número aleatorio?
- 18. Aleatorio no es aleatorio
- 19. Cómo crear mejor un flotador aleatorio en un rango entre dos flotadores
- 20. ¿Cómo descargar el código fuente con Pacman en Arch Linux?
- 21. Algoritmo (s) para encontrar entidades en movimiento en un laberinto
- 22. Cómo generar un número aleatorio de cinco dígitos de Java
- 23. ¿Cómo crear un archivo temporal en Java sin el número aleatorio agregado al nombre de archivo?
- 24. Escogiendo un elemento aleatorio de un conjunto
- 25. ¿Cómo hacer un orden controlado "aleatorio"?
- 26. ¿Cómo inserto un valor aleatorio en mysql?
- 27. ¿Cómo obtener un valor aleatorio de 64 bits en Delphi?
- 28. ¿Cómo obtener un número aleatorio en pascal?
- 29. ¿Cómo generar un número aleatorio en Bash?
- 30. ¿Cómo obtener un número aleatorio en JSTL?
¿Qué quieres decir con "pacman maze"? –
Estoy intentando hacer mi propio clon de pacman y me gustaría crear un "laberinto de pacman" similar a esta imagen http://ryangenno.tripod.com/images/MSpacmaze4.gif. Me gustaría generar esto al azar –
Sé que esta es una vieja pregunta, pero echa un vistazo a este sitio si tienes problemas, me ayudó un montón. http://www.contralogic.com/2d-pac-man-style-maze-generation/ – user1762507