En Barrapunto escribí una cuestión sobre punteros en ada que ya resolví, y me echaron el ojo
Bien, debo decir que la iniciativa me parece excelente, es perfecto para resolver en grupo las dudas sobre este lenguaje de programación que muchos estudiantes usan, y no volverse loco
Me gustaría presentarme aportando mi granito de arena: un juego que hice yo y un compi de la uni "parecido" a Zelda, hecho totalmente en Ada, y usando Adagraph.

(lo blanco se supone que es nieve
(lo digo por si os lo preguntais
El juego ni está terminado ni nada. Solo es un muñeco que se mueve, cambia de arma, ataca y poco más. Hay terreno (muy cuadrado, hay que decirlo), animaciones, sonidos, etc. En general todo es bastante cutre
Lo empezamos en diciembre, y el único objetivo era practicar con ada y no aburrirnos en las fiestas X-D así que no espereis maravillas. Es más, para los editores de frames y terreno el código fuente no está porque nos da vergüenza y todo X-D X-D
http://img89.exs.cx/img89/373/adazelda2jn.jpg
Bien, en primer lugar decir que siempre he trabajado con programación estructurada, y lo único que se de orientada a objetos es de oidas. Asi que todo lo que hay hecho es estructurado.
Basicamente se trata de una matriz que hace de terreno, por un lado a nivel de pixel y a otro de nivel "cuadrados" para el terreno. Encima camina el personaje, que no es más que un registro con atributos (posición en la pantalla, salud, inventario, etc) y que tiene un nombre de fichero con las animaciones (que se crean pixel a pixel con el editor-cutre-frame, algo así como un icon workshop pero tambien hecho en ada...). Como usabamos los sprites que unos crearon para el RPG Maker X-D hicimos un conversor texturas-frame muy cutre, pero que perdí (es muy facil, es solo imprimir la textura, y coger con get_pixel el color y guardarlo en una matriz) y por eso no incluyo.
Hay muchas cosas a medio implantar o implantadas rapido (y mal). Por ejemplo, no hay nivel de abstracción con muchos tipos (como el escenario, y el nda del personaje es muy muy simple), y el tema de objetos a quedado a medio hacer.
Basicamente consiste en una pila donde se guardan los diferentes objetos. Pueden ser de adornos (piedras, flores, etc) o objetos para coger (espadas, arcos, flechas, armadura, etc). En cada iteración (80ms) comprobamos si el personaje está encima y le damos el objeto si no lo tiene (funciona... lo que pasa es que no tenemos los gráficos de los objetos, ya sea del inventario o el sprite del terreno). Las flechas disparadas son un objeto, y por eso el tipo que guardamos en la pila tiene un atributo de "dirección". Las flechas disparadas estan en una posición y en cada iteración avanzan x pixeles en la dirección donde fue disparada. Esto lo comento porque es lo que pensabamos hacer y no terminamos de implantar, por si lo veis no os extrañeis.
Igualmente el procedure de coger objeto (que hace eso, comprobar si el objeto lo tiene el personaje) en un principio lo pusimos en el procedimiento que mira si el jugador ha presionado una tecla y que ibamos a cambiar a un procedimiento más general (que permitiese lo de las flechas, por ejemplo) en la iteración principal.
El tema de los enemigos iba a ser complicado... en un principio sería igual que el "heroe", cada enemigo sería una "variable" de tipo t_personaje. Habíamos pensado en poner todos los personajes en una pila y hacer lo mismo: en cada iteración recorríamos la pila y movíamos el personaje. Detalle: no tenemos ni perra idea de IA. Pero bueno, el caso es que ni hemos empezado a implantar, creo que solo está la pila declarada en el procedure principal.
También hay detalles que todavía no hemos terminado, como la posición "sigilo", que pretendíamos hacer que el personaje fuera más lento pero también fuera "invisible" a los enemigos (solo era una idea).
Bueno, lo demás se puede ver mirando el código. Como se que no lo vais a entender
Bueno, para jugar a la "demo" podeis bajaros este archivo.
http://www.iespana.es/eld/adazelda_bin.rar
Tiene todo lo necesario para "jugar".
Para mover, aswd, para atacar espacio, para cambiar de arma los números (cambia el 1 con el objeto numero x que hayais pulsado), y z para sigilo (que por ahora solo va más lento). Para salir, esc.
Necesitais windows y una resolución de 800x600 (libres, es decir que si teneis la barra de herramientas es como si quitara pixeles, necesitareis o quitarla o usar 1024x768 al menos). A veces da errores de put_pixel y get_pixel, a mí nunca me ha pasado pero en otros pcs lo he visto. Estos errores no los he tratado.
Se puede usar en linux con wine, simplemente añadis adagraph2001.dll al directorio /Windows/System y añadis la referencia al archivo de configuración de wine.
El codigo fuente es este de aquí
http://www.iespana.es/eld/adazelda_source.rar
En imgs teneis posibles sprites que teníamos planeado usar, por si sirven.
El archivo principal es adazelda.adb
El archivo gen_personaje.adb genera el archivo del heroe (sus caracteristicas, etc). Si quereis modificar el heroe, debeis modificar ese archivo, compilar y ejecutar.
No se puede compilar en linux, ya que la adagraph es solo para windows (bueno, no se si se puede compilar usando adagraph en linux, pero creo que no).
Si teneis problemas al compilar, puede que sean las librerias de sonido, quitad el mmc ("with mmc_sound" que está en la cabecera de adazelda.adb) y su referencia (un "play_sound" perdido por ahí) y se compilará y ejecutará sin problemas (y sin sonido).
Para bajar el compilador y las librerias de adagraph, lo podeis encontrar en esta página
http://atlas.usafa.af.mil/dfcs/bios/mcc ... stuff.html
Los links directos (instalar en este orden... creo)
Gnat
ftp://ftp.cs.nyu.edu/pub/gnat/3.15p/win ... -3.15p.exe
ftp://ftp.cs.nyu.edu/pub/gnat/3.15p/win ... 15p-nt.exe
(no me acuerdo cual de los dos es... creo que el primero).
Adagide
ftp://ftp.usafa.af.mil/pub/dfcs/carlisl ... nstall.exe
Adagraph2001
ftp://ftp.usafa.af.mil/pub/dfcs/carlisl ... nstall.exe
Pues eso, cualquier cosa que querais, decidla.
Si tardo en contestar, es porque estoy liadillo, pero tranquilos que responderé




