Re: [ProgJuegos] Generador de laberintos, pequeño aporte.

miércoles, 28 de diciembre de 2011

gracias draco.

El 28 de diciembre de 2011 02:55, Draco Metallium <draco.kun@gmail.com> escribió:
Dado que ya no tengo excusas para no programar, el dia de hoy me pase haciendo solo eso.

Hace unos dias, me encontre con este link www.jamisbuck.org/presentations/rubyconf2011/ que habla sobre algoritmos para crear laberintos perfectos.

En resumen, un laberinto perfecto es uno donde para cada par de puntos dentro de el, solo existe un camino que los conecte, y ademas este siempre existe.

Hice esto para poder ver si podia encontrar una manera eficiente de almacenar el laberinto, ademas de agregarle elementos que nos son propios de los laberintos.

Hasta ahora lo que tengo es lo siguiente:
-Al final almacene cada celda del laberinto como un char, donde los dos ultimos bits (los menos significativos) indican si este tiene una puerta hacia la derecha y/o abajo. Para saber si puede acceder a la izquierda o hacia arriba, hay que acceder a estas celdas y ver si pueden ir hacia abajo o derecha, segun corresponda.
-Lo extra que agrege fueron los salones, espacios grandes sin paredes. Ya saben, habitaciones. Se los puede definir facilmente y los algoritmos de creacion de laberintos deverian funcionar bien apesar de ellos, y darles la vuelta(bajo ciertas condiciones). Para poder identificar estas areas, utilice un bit mas del char, asi que me quedan 5 para uso futuro.
-Por ahora solo hay una funcion para crear el laberinto, lo llame "westnort" pero ahora que chequeo se llama arbol binario, asi que lo corregire mas tarde.

Esta todo programado en C, y tengo que chequar despues un par de cosas para hacerlo mas consistente y rapido.

laberinto.h es el header, laberinto.c es donde estan implementadas las funciones. Todo esta autodocumentado, espero que sirva de algo.
main.c, es un principal rapido que hice, crea un laberinto y crea un archivo de imagen "ppm"(un formato que brilla por su sencilles).

Para aquellos que quieran compilarlo, pero no sepan como hacerlo (yo no sabia como compilar archivos con headers hasta este año T_T), los comandos con el gcc son:
gcc -c laberinto.c
gcc main.c laberinto.o -o test

Espero que a alguien le sirva de algo!
Sugerencias o dudas seran felizmente recividas.

PD: No adjunto el archivo compilado, por que no se que politicas tienen ustedes, pero si quieren lo puedo subir tanto para windows como para linux.

PD2: Mi castellano es horrible, lo se, y creanme que lo lamento yo tambien.

--
El grupo en GoogleGroups: http://groups.google.com/group/ProgJuegos
 
** Usted recibió este mensaje porque es miembro del grupo "Programacion de Juegos" de en Google Groups.

--
El grupo en GoogleGroups: http://groups.google.com/group/ProgJuegos
 
** Usted recibió este mensaje porque es miembro del grupo "Programacion de Juegos" de en Google Groups.

0 comentarios:

Publicar un comentario

Archivos