[Tutorial]NFlib;teclas,música & cmaps.
Página 1 de 1. • Compartir •
[Tutorial]NFlib;teclas,música & cmaps.
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:
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:
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:
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:
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
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

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
NF_PlayRawSound(1, 127, 64, true, 0);//Reproduzco otro}
swiWaitForVBlank(); // Espera al sincronismo vertical
}
return 0;
}
megaupload.com megaupload.comRI2OSXBA
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:
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
-

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
Re: [Tutorial]NFlib;teclas,música & cmaps.
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-Un spoiler te ha salido mal
2-¿Como se haria para decirle al programa: tile amarillo = moneda?
Te dejo un +
pepenillo- NDS-Extrero
-

Cantidad de envíos: 1765
Opinión sobre NDS-Extra: Ninguna
Reputación: 176
Puntos: 2533
Inscripción: 12/08/2010
Re: [Tutorial]NFlib;teclas,música & cmaps.
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
-

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
Re: [Tutorial]NFlib;teclas,música & cmaps.
Ah, ok, no hacia falta el ejemplo, lo he entendido.
pepenillo- NDS-Extrero
-

Cantidad de envíos: 1765
Opinión sobre NDS-Extra: Ninguna
Reputación: 176
Puntos: 2533
Inscripción: 12/08/2010
Re: [Tutorial]NFlib;teclas,música & cmaps.
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
-

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

Re: [Tutorial]NFlib;teclas,música & cmaps.
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
-

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
pepenillo- NDS-Extrero
-

Cantidad de envíos: 1765
Opinión sobre NDS-Extra: Ninguna
Reputación: 176
Puntos: 2533
Inscripción: 12/08/2010
Re: [Tutorial]NFlib;teclas,música & cmaps.
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:
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 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
-

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

Re: [Tutorial]NFlib;teclas,música & cmaps.
Jeje, lo importante es el contenido, no el continente; creo que no se refería a eso, pero bueno...
pepenillo- NDS-Extrero
-

Cantidad de envíos: 1765
Opinión sobre NDS-Extra: Ninguna
Reputación: 176
Puntos: 2533
Inscripción: 12/08/2010
Re: [Tutorial]NFlib;teclas,música & cmaps.
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

- 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

Re: [Tutorial]NFlib;teclas,música & cmaps.
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
-

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
Temas similares» la musica y yo
» la musica y yo
» Videos Musica disco 70's y 80's
» Musica De Fondo para video De Terror
» [Emulador PS2] PCSX2 0.9.6 + Tutorial
» la musica y yo
» Videos Musica disco 70's y 80's
» Musica De Fondo para video De Terror
» [Emulador PS2] PCSX2 0.9.6 + Tutorial
Página 1 de 1.
Permiso de este foro:
No puedes responder a temas en este foro.









