[Tutorial]NFlib;teclas,música & cmaps. 5 5 4

[Tutorial]NFlib;teclas,música & cmaps.

Ver el tema anterior Ver el tema siguiente Ir abajo

[Tutorial]NFlib;teclas,música & cmaps.

Mensaje por Roberto258 el Dom 17 Abr 2011 - 1:05

Este es el tutorial que todos estábais esperando,con lo que aquí veréis podréis empezar a realizar pequeños homebrews como un rpg,por ejemplo.En este número veremos como controlar los botones y la pantalla táctil,como manejarnos con la música y como cargar y usar los mapas de colisiones.Cómo veis,todos son aspectos básicos de la creación de un videojuego.

Botones

Es realmente sencillo,primero,para saber si las teclas se pulsan,debéis poner al principio de un while(o al final):

scanKeys();

Luego,en un if deberemos poner:

if(keysHeld() & tecla);

En tecla podrán ir las siguientes:

KEY_UP
//Arriba

KEY_DOWN
//Abajo

KEY_LEFT
//Izquierda

KEY_RIGHT
//Derecha

KEY_START
//Botón Start

KEY_SELECT
//Botón Select

KEY_L
//Botón L

KEY_R
//Botón R

KEY_A
//Botón A

KEY_B
//Botón B

KEY_Y
//Botón Y

KEY_X
//Botón X

KEY_TOUCH
//Pantalla táctil

Ejemplo:

Spoiler:

int main(int argc, char **argv) {




// Bucle (repite para siempre)

while(1) {

scanKeys(); // Leemos las teclas

if(keysHeld() & KEY_A){ //Si a está pulsado...

iprintf("\n Hello World!");} //Se escribe "Hello World!"


swiWaitForVBlank(); // Espera al sincronismo vertical

}

return 0;

}


Pantalla táctil

Sin embargo,para tocar una posición determinada de la pantalla no nos bastará con KEY_TOUCH;

touchPosition touch;
//Utilizaremos esta variable como otra más.

touchRead(&touch);
//Actualiza la posición del stylus(se debe poner al final de un while

touch.px //Posicion X del Stylus
touch.py //Posicion Y del Stylus
//Con esto controlaremos la posición del stylus

Ejemplo:

Spoiler:
link Question


Sonido

Podéis reproducir sonidos con la librería,pero deberán ser archivos .raw y deben de tener menos de 256 kbs.

soundEnable();
// Inicializa el engine de audio de la DS(ponedlo al principio)

NF_InitRawSoundBuffers();
// Inicializa los buffers de sonido

NF_LoadRawSound("nombre", slot(0-31), frecuencia(Hz), formato de muestra(0=8bits,1=16bits,2=ADPCM));
// Carga los samples de sonido en formato RAW

NF_PlayRawSound(slot, 127(volumen 100%), balance(0-64-127), bucle(true/false), punto donde empieza el bucle);
//Reproduce el sonido

Además de estas,existen otras funciones de libnds muy fáciles de utilizar.

Ejemplo:

Spoiler:

int main(int argc, char **argv) {

consoleDemoInit(); // Inicializa la consola de texto
consoleClear(); // Borra la pantalla

NF_SetRootFolder("NITROFS");//Elegimos nitrofiles como carpeta inicial
NF_Set2D(1, 0);//Inicio el sistema de 2D inferior
NF_Set2D(0, 0);//Inicio el sistema de 2D superior
NF_InitTiledBgBuffers();//Inicio los bufers de los fondos tileados
NF_InitTiledBgSys(1);//Inicio el sistema de fondos inferior
NF_InitTiledBgSys(0);//Inicio el sistema de fondos superior
setBrightness(3, 0); // Restaura el brillo
soundEnable();// Inicializa el engine de audio de la DS
NF_InitRawSoundBuffers(); // Inicializa los buffers de sonido
NF_LoadTiledBg("splashes/nfl", "nf", 256, 256); // Carga el fondo para la capa 3, pantalla inferior
NF_CreateTiledBg(0, 3, "nf"); //Lo crea
NF_LoadTiledBg("splashes/devkitpro", "dev", 256, 256); // Carga el fondo para la capa 3, pantalla inferior
NF_CreateTiledBg(1, 3, "dev"); //Lo crea



s8 c , b = -16;
s32 time = 60*5;

while(!(b==0)){//Mientras que b no sea 0:
c++;
if(c==5){
c= 0;
b++;
}
setBrightness(3, b);
swiWaitForVBlank();
}

scanKeys();//Escanea las teclas, por el momento no le hagais mucho caso a esto
while(time && !(keysHeld() & KEY_A)){//no le hagais mucho caso a la segunda parte, esto se explica más adelante
swiWaitForVBlank();//Espera sincronismo vertical
time--;//Restamos uno al tiempo
scanKeys();//Escanea las teclas, por el momento no le hagais mucho caso
}

c = 0, b = 0;

while(!(b==-16)){
c++;
if(c==5){
c = 0;
b--;
}
setBrightness(3, b);//Cambia la luminosidad
swiWaitForVBlank();//Espera el sincronismo vertical
}

setBrightness(3, 0);


NF_LoadTiledBg("bg/Testerds","fondo1",256,256); //carga el fondo 1 (Testerds)
NF_CreateTiledBg(0,3,"fondo1"); //Crea el fondo 1 (Testerds) en la pantalla de arriba,capa 3
NF_LoadTiledBg("bg/Entrada","fondo2",256,256); //carga el fondo 2 (Toca para empezar)
NF_CreateTiledBg(1,3,"fondo2"); //Crea el fondo 2 (Toca para empezar) en la pantalla de abajo,capa 3

// Carga los samples de sonido en formato RAW
NF_LoadRawSound("audio/3KU", 0, 11025, 0);
NF_LoadRawSound("audio/09_SC3K_Broadway", 1, 11025, 0);

// Variables
u16 newpress = 0;
u8 sound_id = 0;

// Inicia la musica de fondo
sound_id = NF_PlayRawSound(0, 127, 64, true, 0);

// Bucle (repite para siempre)
while(1){

scanKeys();
newpress = keysDown();

if(newpress & KEY_TOUCH){
soundPause(sound_id);//Paro el sonido
soundKill(sound_id);//Lo mato Twisted Evil
NF_PlayRawSound(1, 127, 64, true, 0);//Reproduzco otro}

swiWaitForVBlank(); // Espera al sincronismo vertical

}

return 0;

}

megaupload.com megaupload.comRI2OSXBA Question



Desechos

Si queréis llegar a ser buenos coders,tenéis que administrar un aparato que sólo tiene 4MB de RAM ¡La DS!

NF_ResetRawSoundBuffers();
//Borra todo

NF_UnloadRawSound(slot);
//Borra de la RAM el archivo indicado.

CMAPS

Un cmap puede ser algo como esto:



Como veis,todo está formado por tiles que indican donde están las monedas o por donde puede ir el personaje.En la primera línea hay un barra de tiles donde se indica el valor de cada uno,por lo que vuestro CMAP siempre será 8 píxeles más alto que vuestra imagen.

Nota:Como en los gráficos,los cmaps también deberemos convertirlos con el grit utilizando convert_cmaps.

NF_InitCmapBuffers();
//Inicializa los buffers

NF_LoadColisionMap(archivo, slot, ancho, alto);
//Carga el CMAP

NF_GetTile( Slot, X ,Y);
//Devuelve el valor del tile que está en esas coordenadas(especificado en la 1ª línea).

NF_SetTile( Slot, capa, X, Y, nuevo valor(0 – 255) );
//Cambia el valor del tile que se encuentra en esas coordenadas.Las posiciones x e y deben de ser en tiles.

NF_GetPoint( slot (0 – 31),X,Y);
//Devuelve el color del píxel dado(devuelve 0 si está afuera).

Ejemplos:

Spoiler:

C:...\nflib\examples\colisions

megaupload.com megaupload.com5EJ1PLBD



Desechos

NF_ResetCmapBuffers();
//Lo borra todo

void NF_UnloadColisionMap(slot);
//Borra de la RAM el mapa que usa ese slot

Hasta aquí llega el último tutorial básico,si tenéis alguna duda o véis que algo está mal explicado reportádmelo.¡Buena suerte!
___________________________________________________________________________________

Otros tutoriales nflib

1-Conceptos previos e instalación.
2-Textos;usarlos y mostrarlos.
3-Gráficos simples fondos & sprites.Utilizar los splashes.
4.1-Maxmod, las librerías de audio de la NDS


Última edición por Roberto258 el Mar 3 Ene 2012 - 14:19, editado 7 veces

Roberto258
NDS-Fan

Masculino
Cantidad de envíos: 857
Localización: P'allá, p'allá, y luego to p'alante
Empleo/Ocio: Llevar el juego del asesino :P
Humor: Quarcástico
Opinión sobre NDS-Extra: Me Encanta
Reputación: 77
Puntos: 1081
Inscripción: 28/08/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por pepenillo el Dom 17 Abr 2011 - 10:27

Buen tutorial, dos cosillas:
1-Un spoiler te ha salido mal
2-¿Como se haria para decirle al programa: tile amarillo = moneda?

Te dejo un +

pepenillo
NDS-Extrero

Masculino
Cantidad de envíos: 1765
Opinión sobre NDS-Extra: Ninguna
Reputación: 176
Puntos: 2533
Inscripción: 12/08/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por Roberto258 el Dom 17 Abr 2011 - 23:14

pepenillo escribió:Buen tutorial, dos cosillas:
1-Un spoiler te ha salido mal
2-¿Como se haria para decirle al programa: tile amarillo = moneda?

Te dejo un +


1-Que raro,en la vista previa salía bien.
2-Un tile no puede valer moneda,no sé si me explico.Un tile vale un número(en el caso del amarillo 4) y si tú quieres que el sprite al colocarse en la posición de ese tile,se sume 1 a las monedas totales tienes que hacer algo asi:

if(NF_GetTile( 0, X ,Y) == 4){

monedas + valor_que_se_le_de;}

De esta manera le estariamos diciendo al compilador que si en las posiciones x,y hay un tile de valor 4,se le sume un valor a las monedas,puesto que ese tile representa una moneda.

Te he hecho un ejemplo:

megaupload.com megaupload.com5EJ1PLBD

P.D.:Se me olvidó añadir al tutorial que los cmaps también hay que convertirlos.

Roberto258
NDS-Fan

Masculino
Cantidad de envíos: 857
Localización: P'allá, p'allá, y luego to p'alante
Empleo/Ocio: Llevar el juego del asesino :P
Humor: Quarcástico
Opinión sobre NDS-Extra: Me Encanta
Reputación: 77
Puntos: 1081
Inscripción: 28/08/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por pepenillo el Lun 18 Abr 2011 - 9:40

Ah, ok, no hacia falta el ejemplo, lo he entendido.

pepenillo
NDS-Extrero

Masculino
Cantidad de envíos: 1765
Opinión sobre NDS-Extra: Ninguna
Reputación: 176
Puntos: 2533
Inscripción: 12/08/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por amigos el Lun 18 Abr 2011 - 17:11

Bueno el tutorial está completo o qué, es que lo quiero imprimir y lo quiero sin errores, si te ha faltado algo como lo de la duda de Pepenillo postealó, y si está todo bien y completo avísame.

amigos
NDS-Extrero

Masculino
Cantidad de envíos: 1167
Localización: Andalucia-España
Empleo/Ocio: Estudiante de ESO
Humor: Pues no seee.... creo que genial.... pero no me acuerdo... :P
Opinión sobre NDS-Extra: Es la Mejor de NDS
Reputación: 102
Puntos: 1595
Inscripción: 11/12/2009

Ver perfil de usuario http://video-jugones.foroactivo.com

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por Roberto258 el Lun 18 Abr 2011 - 22:36

pepenillo escribió:Ah, ok, no hacia falta el ejemplo, lo he entendido.


Bueno,pero quizás no está de más que te lo mires.

amigos escribió:Bueno el tutorial está completo o qué, es que lo quiero imprimir y lo quiero sin errores, si te ha faltado algo como lo de la duda de Pepenillo postealó, y si está todo bien y completo avísame.


Si,está completito,aunque no garantizo que no haya puesto todo perfecto,desde mi punto de vista(teniendo en cuenta que lo he hecho yo es muy inportante) está perfecto.
Si lo vas a imprimir recuerda descargarte los ejemplos primero.

P.D.:¿Qué os a parecido el tuto?

Roberto258
NDS-Fan

Masculino
Cantidad de envíos: 857
Localización: P'allá, p'allá, y luego to p'alante
Empleo/Ocio: Llevar el juego del asesino :P
Humor: Quarcástico
Opinión sobre NDS-Extra: Me Encanta
Reputación: 77
Puntos: 1081
Inscripción: 28/08/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por pepenillo el Mar 19 Abr 2011 - 9:12

Muy bueno.

pepenillo
NDS-Extrero

Masculino
Cantidad de envíos: 1765
Opinión sobre NDS-Extra: Ninguna
Reputación: 176
Puntos: 2533
Inscripción: 12/08/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por amigos el Miér 20 Abr 2011 - 17:15

Está muy bien, pero te voy a dar clases sobre Lengua, veamos, cuando pones una coma (,) le tiene que seguir un espacio, es que tu no pones el espacio después de la coma, y resulta incómodo de leer, lo mismo pasa con los paréntesis, cuando vas a abrir paréntesis delante de una palabra debes de poner un espacio, y al cerrar el paréntesis una coma. en caso de que vayas a seguir escribiendo, o un punto si es que has terminado la frase, aquí unos ejemplos:

Para el de las comas podemos decir:

"El tiempo hoy en Londres es de un cálido abrasador, junto con un viento del este."


Bueno, espero que tengas esto en cuenta a la hora de escribir tus tutoriales o cualquier mensaje normal, esto es todo, saludos.

PD: Muy bueno el tutorial, gracias.

Para el de los paréntesis podemos decir:

"Para completar la barra, (esa que tenéis ahí) hace falta un bolígrafo azul."

amigos
NDS-Extrero

Masculino
Cantidad de envíos: 1167
Localización: Andalucia-España
Empleo/Ocio: Estudiante de ESO
Humor: Pues no seee.... creo que genial.... pero no me acuerdo... :P
Opinión sobre NDS-Extra: Es la Mejor de NDS
Reputación: 102
Puntos: 1595
Inscripción: 11/12/2009

Ver perfil de usuario http://video-jugones.foroactivo.com

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por pepenillo el Miér 20 Abr 2011 - 18:32

Jeje, lo importante es el contenido, no el continente; creo que no se refería a eso, pero bueno...

pepenillo
NDS-Extrero

Masculino
Cantidad de envíos: 1765
Opinión sobre NDS-Extra: Ninguna
Reputación: 176
Puntos: 2533
Inscripción: 12/08/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por Ele_14 el Miér 20 Abr 2011 - 19:22

amigos escribió:Está muy bien, pero te voy a dar clases sobre Lengua, veamos, cuando pones una coma (,) le tiene que seguir un espacio, es que tu no pones el espacio después de la coma, y resulta incómodo de leer, lo mismo pasa con los paréntesis, cuando vas a abrir paréntesis delante de una palabra debes de poner un espacio, y al cerrar el paréntesis una coma. en caso de que vayas a seguir escribiendo, o un punto si es que has terminado la frase, aquí unos ejemplos:

Para el de las comas podemos decir:

"El tiempo hoy en Londres es de un cálido abrasador, junto con un viento del este."


Bueno, espero que tengas esto en cuenta a la hora de escribir tus tutoriales o cualquier mensaje normal, esto es todo, saludos.

PD: Muy bueno el tutorial, gracias.

Para el de los paréntesis podemos decir:

"Para completar la barra, (esa que tenéis ahí) hace falta un bolígrafo azul."


Igual es porque Rober comentó hace tiempo que tenía la barra espaciadora mal y se ha acostumbrado... o igual para economizar tiempo, pero en todo caso escribe mucho mejor que la mayor parte del foro....

_____________________________


Sí, soy un mito. Un mito muy especial que se crea a sí mismo.
Las mejores mentiras sobre mí son las que yo mismo he contado.

Spoiler:


~ Cuando soy buena, soy muy buena. Pero cuando soy mala, soy mucho mejor. ~



~ Seré más raudo que un río bravo, tendré la fuerza de un gran tifón.
Con la energía del fuego ardiente, la Luna sabrá guiar el corazón. ~

Las sombras ocultaban un dragón. El dragón, un gigante. El gigante, una niña. Y la niña una espada...

Ele_14
Moderador
Moderador

Cantidad de envíos: 3593
Localización: Madrid, España
Empleo/Ocio: Detective asesora
Humor: Twittero.
Reputación: 544
Puntos: 4780
Inscripción: 27/11/2009

Ver perfil de usuario http://videojuegos-y-mas.jimdo.com/

Volver arriba Ir abajo

Re: [Tutorial]NFlib;teclas,música & cmaps.

Mensaje por Roberto258 el Miér 20 Abr 2011 - 22:10

Ele_14 escribió:
amigos escribió:Está muy bien, pero te voy a dar clases sobre Lengua, veamos, cuando pones una coma (,) le tiene que seguir un espacio, es que tu no pones el espacio después de la coma, y resulta incómodo de leer, lo mismo pasa con los paréntesis, cuando vas a abrir paréntesis delante de una palabra debes de poner un espacio, y al cerrar el paréntesis una coma. en caso de que vayas a seguir escribiendo, o un punto si es que has terminado la frase, aquí unos ejemplos:

Para el de las comas podemos decir:

"El tiempo hoy en Londres es de un cálido abrasador, junto con un viento del este."


Bueno, espero que tengas esto en cuenta a la hora de escribir tus tutoriales o cualquier mensaje normal, esto es todo, saludos.

PD: Muy bueno el tutorial, gracias.

Para el de los paréntesis podemos decir:

"Para completar la barra, (esa que tenéis ahí) hace falta un bolígrafo azul."


Igual es porque Rober comentó hace tiempo que tenía la barra espaciadora mal y se ha acostumbrado... o igual para economizar tiempo, pero en todo caso escribe mucho mejor que la mayor parte del foro....


Exacto,esa maldita barra espaciadora hace que a veces tarde más de lo normal en escribir un simple comentario,y ya ni te digo para hacer el tutorial la de veces que tengo que darle a la barra.Aunque si te digo la verdad, lo de las comas y () no lo sabía, gracias.

Roberto258
NDS-Fan

Masculino
Cantidad de envíos: 857
Localización: P'allá, p'allá, y luego to p'alante
Empleo/Ocio: Llevar el juego del asesino :P
Humor: Quarcástico
Opinión sobre NDS-Extra: Me Encanta
Reputación: 77
Puntos: 1081
Inscripción: 28/08/2010

Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

Permiso de este foro:
No puedes responder a temas en este foro.