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:
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.
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
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.
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
Publicar un comentario