viernes, 22 de mayo de 2009

Creación de mapas para el Juego (II)

Hemos seguido desarrollando el programa de Java para crear mapas. Se ha detectado un error a la hora de generar los mapas de 8 pixeles y se ha añadido la posibilidad de crear más niveles (hasta los cuatro que permite la Nintendo DS).



En la foto se puede ver que se ha añadido una lista de opciones con el nombre 'cero', 'one', 'two' y 'three'. Al añadir dibujos a la pantalla se añadirán al mapa que esté seleccionado. tener en cuenta que el mapa 'cero' es de de mayor prioridad, y así hasta el 'three'. (Por supuesto, mayor prioridad es que sale encima).

En la foto las plantas están en la pantalla 'one', y los ladrillos en la 'two'.

A la hora de cargar un mapa se ha de cargar el cero_mapa_16.txt, con la opción abrir mapa 16. A la hora de guardar se pondrá, únicamente, el nombre de un txt.
Si por ejemplo se pone casa.txt el programa generará:
cero_mapa_16_casa.txt, (este es el que habrá que cargar la próxima vez para editar todos los mapas)
cero_mapa_8_casa.txt,
cero_collision_8_casa.txt,
one_mapa_16_casa.txt,
one_mapa_8_casa.txt,
one_collision_8_casa.txt,
two_mapa_16_casa.txt,
two_mapa_8_casa.txt,
two_collision_8_casa.txt,
three_mapa_16_casa.txt,
three_mapa_8_casa.txt y
three_collision_8_casa.txt

Los ficheros de colisión serán los que utilizaremos para el tema de las colisiones. En nuestro caso sólo usaremos el cero_collision_8_...

La última versión la encontraréis aquí.

Con todo esto creo que tenemos toda la información necesaria para poder programar nuestro juego. Otra cosa que se puede hacer en el futuro es cargar estos txt directamente desde el juego. Tiempo al tiempo.

Saludos

4 comentarios:

David Martínez Martínez dijo...

Hola Íñigo, me he puesto un rato a hacer el mono con tu editor de mapas y está muy requetebien. Me gusta la forma que has cogido de, la primera capa no se puede atravesar y ya está.

Una pregunta, ¿a qué te refieres a cargar directamente los txt en el juego? Si es lo que hace ahora mismo, ¿no? Los coge de un fichero .txt. ¿O te refieres a ponerle un editor al propio NSMB? Si es eso, no me parece muy buena idea, ya que no es muy práctico y es propenso a dar mil errores.

Te quería comentar una cosa con el archivo execute.bat que usas para lanzar la aplicación. Al usar este archivo, se queda la pantalla en negro pululando y cuando cierras el programa, tienes que también estar cerrando la pantalla de MS-DOS. Hay una forma muy fácil de hacer que, si cierras el programa, esa pantalla se cierre sola.

Este es el código que usé:

@echo off
start /b java -cp bin org.devnintendods.Mapas

echo off, lo que hace es que no se lea los comandos que usas, solo se vea los resultados que obtienes. Pues bien, @echo off hace que ni siquiera se lea el primer echo off que haces.

Y luego, start lo que hace es lanzar una aplicación, siendo /b en segundo plano. Así te ahorras el pause del final. Lo único, que no se por qué con este comando se queda abierta la pantalla de MS-DOS y la aplicación, y si cierras alguna de las dos ventanas se cierran las dos. En otras cosas, como por ejemplo lanzar IEXPLORE.EXE te puedo asegurar que aparece medio segundo la pantalla en negro y ella solita se cierra.

Yo uso mucho esto para abrir correos corporativos, que tengo mil cada uno para una cosa, así que me ejecuto mi proceso por lotes y me los abre todos, sin tener que ir yo luego cerrando ventanitas negras.

Espero que te resulte útil este comentario, ya sea para esto o para cualquier otra cosa. ¡Sigue así! Cuídate.

Inigo dijo...

Hola David

A cargar los txt me refiero a que el SuperMarioDS cargue las plataformas desde un fichero de datos, y no usar los arrays que hay al principio del fichero NSMB.cpp.

Me ha gustado la solución del start, no lo conocía. He probado esto :
@echo off
start /b javaw -cp bin org.devnintendods.Mapas

y queda genial, lo dejaré como NSMB.bat

Saludos y gracias de nuevo

DaNi dijo...

Hola, antes de nada felicitar por este elaborado blog.

Estoy trasteando con el Devkitpro y me ha venido un problema ¿cómo paso una variable de entero a char?

Espero que alguien pueda decirme cómo

Gracias.

Inigo dijo...

Buenas

No sé si este es el 'foro' más indicado para hacer ese tipo de preguntas.
Yo creo que sería más fácil hacer esa pregunta al google. Seguro que ahí obtendrás más de una solución.

Saludos