2011-05-21 9 views
6

Estoy tratando de implementar el primer algoritmo de búsqueda de profundidad en mi juego. He estado estudiando esta página web: http://www.mazeworks.com/mazegen/mazetut/index.htm, solo para descubrir que no podría usarla con bloques en lugar de Paredes. Lo que quiero decir con bloques es un cuadrado que cubre toda la celda, en lugar de solo los bordes. Pensé que sería más fácil hacerlo de esta manera, pero ahora no estoy tan seguro. ¿Alguien ha hecho esto? ¿Si es así, cómo? (psuedocode está bien). O, ¿debería ir con el método de las paredes, si es más fácil?Algoritmo de generación de laberinto en profundidad con bloques en lugar de paredes

+0

no es un bloque de sólo una célula que tiene las cuatro paredes? –

+0

tal vez, pero ¿y si pudiera eliminar todo el bloque, y no solo una de sus paredes ... buena pregunta sin embargo. – Xedfire

+0

Sin más información sobre su aplicación en particular, es difícil decir si puede aplicar ese primer algoritmo de generación de laberinto de profundidad. Como dices, está diseñado para funcionar con células que tienen paredes individuales en lugar de celdas "bloqueadas". –

Respuesta

4

dependiendo de lo que realmente desee lograr, tengo dos soluciones para usted. ambos son básicamente el algoritmo presentado en el sitio web al que se ha hecho referencia.

1.) hay bloques en las posiciones predefinidas en su laberinto

  • ejecutar el algoritmo en una cuadrícula 2*k+1
  • asumen la numeración de sus células empieza a arriba a la izquierda con (0,0). marque todas las celdas con 2 coordenadas impares ((2*p+1, 2*q+1); p,q < k) como bloques.
  • ejecuta el algoritmo modificado desde su fuente en las celdas restantes ('celdas pares'). las modificaciones son:
    • inicio con una célula incluso escogido al azar
    • una 'célula vecina' es el segundo pero la próxima celda en cualquier dirección de la red; es decir, 'salta' sobre un ladrillo.
    • en lugar de derribar la pared entre celdas, , convierte el bloque en una celda accesible. Sin embargo , esta célula no será considerado por la selección y dar marcha atrás

2.) en lugar de muros de separación celdas que desea bloques.

antes de iniciar el algoritmo, marque cualquier número de celdas como bloques. proceda como se indica en su fuente, pero nunca considere ninguna de las celdas de bloque. tendrá que tomar precauciones especiales si quiere garantizar accesibilidad completa en su laberinto. un esquema simple sería nunca marcar una celda como un bloque que tiene más de 1 bloque como vecinos.

Espero que estas ideas se adaptan a sus necesidades,

mejores saludos, Carsten

Cuestiones relacionadas