[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 - 3: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 juego RPG, por ejemplo. Aquí aprenderemos a controlar los botones y la pantalla táctil, manejarnos con la música y cargar y usar los mapas de colisiones. Como ves, 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 debemos 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) {

consoleDemoInit(); //Inicia la consola de texto
setBrightness(3,0); //Restaura el brillo


// 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
consoleClear(); //Borra la pantalla
}

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:
int main(int argc, char **argv) {


consoleDemoInit(); //Inicia la consola de texto
setBrightness(3,0); //Restaura el brillo
touchPosition touch; //Declaramos la variable para leer la posición del stylus

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



if(touch.px > 210 && touch.py > 160){
iprintf("¡Excelente!");
}

swiWaitForVBlank(); // Espera al sincronismo vertical
touchRead(&touch);
consoleClear();
}

return 0;

}

En este ejemplo se mostrará un texto sólo si tocamos la esquina inferior derecha de la pantalla. Adelante, probadlo por vosotros mismos =D

Sonido

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

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) {

soundEnable();// Inicializa el engine de audio de la DS
NF_InitRawSoundBuffers(); // Inicializa los buffers de sonido

NF_SetRootFolder("NITROFS");//Elegimos nitrofiles como carpeta inicial

// 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;

}



Como podréis observar si descargáis el ejemplo, suena una música al abrir el homebrew y otra diferente al tocar la pantalla táctil, tal como indica el código.

Desechos

Si queréis llegar a ser buenos coders, un buen ejercicio es administrar un aparato que sólo tiene 4MB de RAM. ¡La NDS!

NF_ResetRawSoundBuffers();
//Borra todo

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

CMAPS

Un cmap puede ser algo como esto:



¿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 vuestro background.

Nota: Como en los gráficos, los cmaps también hay que 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.

Podéis encontrar un bueno ejemplo del manejo de cmaps en los ejemplos que trae consigo la librería (C:...\nflib\examples\colisions\tiles).

Desechos

NF_ResetCmapBuffers();
//Lo borra todo

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 creé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 Jue 1 Ago 2013 - 19:19, editado 9 veces
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1144
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
Inscripción : 28/08/2010
Reputación : 110
Puntos : 1415

Volver arriba Ir abajo

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

Mensaje por pepenillo el Dom 17 Abr 2011 - 12: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
Inscripción : 12/08/2010
Reputación : 179
Puntos : 2532

Volver arriba Ir abajo

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

Mensaje por Roberto258 el Lun 18 Abr 2011 - 1: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:

http://www.megaupload.com/?d=5EJ1PLBD

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

Masculino
Cantidad de envíos : 1144
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
Inscripción : 28/08/2010
Reputación : 110
Puntos : 1415

Volver arriba Ir abajo

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

Mensaje por pepenillo el Lun 18 Abr 2011 - 11: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
Inscripción : 12/08/2010
Reputación : 179
Puntos : 2532

Volver arriba Ir abajo

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

Mensaje por amigos el Lun 18 Abr 2011 - 19: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.
avatar
amigos
NDS-Extrero

Masculino
Cantidad de envíos : 1420
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
Inscripción : 11/12/2009
Reputación : 96
Puntos : 1906

http://youtube.com/user/Joserg131

Volver arriba Ir abajo

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

Mensaje por Roberto258 el Mar 19 Abr 2011 - 0: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?
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1144
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
Inscripción : 28/08/2010
Reputación : 110
Puntos : 1415

Volver arriba Ir abajo

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

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

Muy bueno.

pepenillo
NDS-Extrero

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

Volver arriba Ir abajo

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

Mensaje por amigos el Miér 20 Abr 2011 - 19: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."
avatar
amigos
NDS-Extrero

Masculino
Cantidad de envíos : 1420
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
Inscripción : 11/12/2009
Reputación : 96
Puntos : 1906

http://youtube.com/user/Joserg131

Volver arriba Ir abajo

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

Mensaje por pepenillo el Miér 20 Abr 2011 - 20: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
Inscripción : 12/08/2010
Reputación : 179
Puntos : 2532

Volver arriba Ir abajo

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

Mensaje por Ele_14 el Miér 20 Abr 2011 - 21: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. ~

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



~ 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. ~
avatar
Ele_14
Moderador
Moderador

Femenino
Cantidad de envíos : 4096
Localización : División Fringe
Empleo/Ocio : Detective asesora
Humor : Mysterious as the dark side of the moon~
Opinión sobre NDS-Extra : Me Encanta
Inscripción : 27/11/2009
Reputación : 589
Puntos : 5360

http://snowbooks.blogspot.com.es/

Volver arriba Ir abajo

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

Mensaje por Roberto258 el Jue 21 Abr 2011 - 0: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.
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1144
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
Inscripción : 28/08/2010
Reputación : 110
Puntos : 1415

Volver arriba Ir abajo

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

Mensaje por orochimaru el Lun 8 Abr 2013 - 22:51

Links Caidos D':
avatar
orochimaru
NDS-Junior

Masculino
Cantidad de envíos : 88
Localización : mexico
Empleo/Ocio : el sillon
Humor : happy
Opinión sobre NDS-Extra : Es la Mejor de NDS
Inscripción : 06/04/2011
Reputación : 4
Puntos : 174

http://orochimaru1997.tu.tv/

Volver arriba Ir abajo

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

Mensaje por Roberto258 el Jue 1 Ago 2013 - 19:22

orochimaru escribió:Links Caidos D':

He cambiado los ejemplos y he subido nuevos links. De todos los tutoriales, este es el que se ha llevado el mejor lavado de cara xD He corregido muchos fallos. Casi ha quedado impecable.
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1144
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
Inscripción : 28/08/2010
Reputación : 110
Puntos : 1415

Volver arriba Ir abajo

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

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

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