viernes, 24 de abril de 2009

Creación de mapas para el Juego

Después del paréntesis de la semana santa volvemos al proyecto en que estamos metidos, hacer el New Super Mario Bros para la Nintendo DS.

En esta entrada vamos a presentar un programa que sirve para hacer los mapas del juego. Es un poco cutre, pero el tiempo no da para más. Aquí os dejo un pantallazo del programa.



Su uso es muy sencillo:
  • Primero, se debe cargar el tileset con el que queremos dibujar el mapa (fichero/abrir tileset...),

  • Segundo, si queremos modificar un mapa ya hecho lo cargamos con la opción fichero/abrir mapa 16,

  • Tercero, seleccionamos el tile que queremos dibujar en la parte superior,

  • Cuarto, vamos 'clickando' por la pantalla para ir poniendo los cuadraditos y

  • Finalmente guardamos el mapa con la opción 'guardar 16'.

Si os fijáis, al cargar se carga con la opción de cargar mapa 16. Esto es que el programa trabaja con tiles de 16x16 pixeles, así que el mapa a cargar sera de 16.

La opción de 'grabar 16' graba el mapa con tiles de 16x16 pixeles (salida_16.txt).
La opción de 'grabar 8' graba con tiles de 8x8 pixeles (salida_8.txt).

El proyecto java lo encontrareis aquí.

No he explicado nada de java, no es tema de este blog, pero si alguien quiere saber algo, que lo diga. Por otra parte, ¡¡¡he comentado bastante el código!!!


Para ver el mapa dentro de nuestro juego, únicamente, tendremos que copiar el contenido del fichero a NSMB.cpp. Es el array denominado mapa8.

El último código lo encontraréis aquí.

Hay un cambio con respecto a la anterior versión y es que antes dibujábamos casillas de 16x16 y ahora de 8x8. Dejaremos la anterior funcionalidad en las librerías por si a algún otro proyecto le pueda interesar.

Ahora ya podemos ir a por el tema de las colisiones y, después, a por el tema de la gravedad.

Ya siento no poder avanzar más pero de donde no hay no se puede sacar, y no tengo nada de tiempo.

Nos vemos en los comentarios, saludos

viernes, 10 de abril de 2009

Doxygen :: Comentar el código

He estado hablando con David y estamos viendo la posibilidad de comentar el código de una forma más extensa que hasta ahora. O mejor dicho, hasta ahora no se comentaba casi nada en las fuentes.

Hemos estado mirando las distintas herramientas que hay en Internet para documentar un proyecto y parece que Doxygen es la que nos parece más potente y fácil de usar. Posee una opción para utilizar los comentarios JavaDoc por lo que el que conozca esta forma de comentar ya lo tiene todo hecho, y ese es más o menos mi caso.

El resultado es algo parecido a esto:


¡Ahora sólo queda comentar el código!

Saludos

viernes, 3 de abril de 2009

Sonidos en la Nintendo DS

Esta semana vamos a tocar un tema que hasta el momento no habíamos hecho nada, el sonido.

Para ilustrar el tema tenemos código que ha mandado David. David es un crack de la programación de la nintendo DS, además de ser quien aporta más comentarios al Blog.

El código es el siguiente:


#include &lh;PA9.h>

#include "intro.h"
#include "uno.h" // Include the sound (found in the data folder in .raw format)
#include "dos.h"
#include "tres.h"
#include "cuatro.h"

#include "constantes.h"

int main(void)
{
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL

PA_InitSound();

PA_InitText(SCREEN_TOP, BACKGROUND_ZERO); // Initialise the text system on the top screen
PA_InitText(SCREEN_BOTTOM, BACKGROUND_ZERO); // Initialise the text system on the top screen

PA_OutputSimpleText(SCREEN_TOP, 0, 1, "Prueba raw,pulsa Arriba para escuchar");
PA_OutputSimpleText(SCREEN_TOP, 0, 3, "--------------------------------");

PA_WaitForVBL();

s32 sonido = 1;
while (1)
{
if (Pad.Newpress.Up)
{
switch (sonido)
{
case 1:
PA_PlaySimpleSound(0, uno);
sonido ++;
break;
case 2:
PA_PlaySimpleSound(0, dos);
sonido ++;
break;
case 3:
PA_PlaySimpleSound(0, tres);
sonido ++;
break;
case 4:
PA_PlaySimpleSound(0, cuatro);
sonido = 1;
break;
default:
PA_PlaySimpleSound(0, intro);
break;
}
}

PA_OutputText(SCREEN_BOTTOM, 1, 3, "sonido %d ", sonido);

PA_WaitForVBL();
}

return 0;
}


Para realizar este proyecto se han de seguir los siguientes pasos:

1. Copiar los ficheros de sonido .raw a la carpeta data
2. realizar los includes de los sonidos
3. constants.h se encuentra en la carpeta 'include'. Como ya nos enseñó David, en esa carpeta puedes dejar cosas comunes y el compilador va a buscarlas ahí por defecto. constants.h hace las veces de devnintendods.h en los proyectos mios.
4. PA_InitSound(); Esta función de PALib no la habíamos usado nunca hasta ahora. Inicializa el sistema de sonido de la consola.
5.PA_PlaySimpleSound(0, uno); Hace sonar el fichero de sonido uno, por el canal 0. Tenemos hasta 8 canales disponibles, lo que permite tener varios sonidos sonando a la vez. En este ejemplo sólo falta una música de fondo, como si fuera la melodía de un juego.

El programa mantiene una variable, sonido, que va pasando de 1 a 4 para que suenen los distintos ficheros.

Un código sencillo y elegante.

El proyecto lo dejo donde siempre.

Saludos y gracias David.

P.D. En estos momentos estoy sin tiempo, y con la proximidad de semana santa quizás no consiga llegar a mi cita semanal...