[Tutorial] NFlib, textos: usarlos y mostrarlos.

Ver el tema anterior Ver el tema siguiente Ir abajo

[Tutorial] NFlib, textos: usarlos y mostrarlos.

Mensaje por Roberto258 el Vie 4 Feb 2011 - 23:50

Si habéis conseguido finalizar la instalación, podéis empezar a crear todo tipo de homebrews, pero debéis recordar que las NFlib son unas librerías que utilizan el devkitARM y libnds, están creadas por KnightFox y, lo más importante, están sujetas a la licencia Creative Commons NoComercial 3.0., que tenéis que aceptar y cumplir antes de publicar cualquier homebrew o usar la librería.

Para ello deberemos de ir a donde hayamos puesto la carpeta nflib y leer:

- [ESP] Licencia creative commons
- [ESP] Descargo de responsabilidad

Que os informrán de la licencia y los derechos de uso. La mejor manera de cumplirla es realizando unos splashes al principio del homebrew para nombrar que se ha hecho con NFlib. Esto lo veremos más detenidamente en el próximo tutorial.
_________________________________________________________________________________________________________________________________________

¿Como empiezo un proyecto?

Para empezar un proyecto, copiad la carpeta "template" (que está en la carpeta de nflib) a cualquier otro sitio. Podemos cambiarle el nombre pero NO DEBE CONTENER ESPACIOS.
Para saber si hemos instalado todo perfectamente, sólo hay que darle a "compile", que es un archivo .bat que compilará el proyecto. Después a "clean" para borrar lo que se ha producido.

Y ahora veremos donde deberemos escribir para realizar nuestro proyecto, el "main.cpp", que se localiza en "carpeta_de_tu_proyecto"\source. Este lo podemos abrir con cualquier editor de texto, como el bloc de notas, pero yo recomiendo el "Programmer's Notepad", que viene instalado con el devkitpro.
Una vez abierto, veremos lo siguiente:

Spoiler:

Como podéis ver al final de cada línea se encuentra un punto y coma. Esto es muy importante porque si no se pone ";" al final de cada línea el compilador seguirá leyendo en la siguiente línea como si fuera la misma, y eso ocasionará error seguro.
*Ahí viene todo bastante claro, así pasaré directamente a los textos.

Escribir en pantalla (Básico)

Si habéis mirado el main.cpp veréis que hay una parte que dice:

iprintf("\n Hello World!");

Esto significa que se escribirá en pantalla Hello World! sin utilizar ningún tipo de fuente específica o un posición predeterminada, por lo tanto no suele usarse.


Escribir con una fuente y en un lugar exacto (Básico y obligatorio)

Debemos conseguir una fuente que podamos usar en las librerías, la cual podemos convertir con el grit, o usar las que viene con los ejemplos de la librería.
Yo usaré las que vienen en nflib\examples\text\font template (default es la normal y font16 la grande). Creamos una carpeta llamada "fnt" dentro de la carpeta "nitrofiles", en la raíz del proyecto y pegamos allí las fuentes.

Ahora empezaré a explicaros las funciones necesarias:

NF_SetRootFolder("NITROFS");
//Esta función elige la carpeta *nitrofiles como carpeta inicial, que se agregará a nuestro homebrew.

*Nota: Si elegimos cualquier otra carpeta creada por nosotros (y puesta en la raíz del proyecto) deberemos copiar dicha carpeta a la raíz de nuestra flash card.

NF_Set2D(pantalla, modo);
//Esto inicia el sistema de fondos en la pantalla que queramos (1 ó 2). En el modo debemos poner 0.

NF_InitTiledBgBuffers();
//Esto inicia los bufers de los fondos tileados (el texto es un fondo tileado).

NF_InitTiledBgSys(pantalla);
//Inicia el sistema de fondos tileados en la pantalla indicada (debemos haber usado antes NF_InitTiledBgBuffers();).

NF_InitTextSys(pantalla);
//Inicia el sistema de fondos de la pantalla que nos de la real gana (debemos haber usado antes NF_InitTextSys(pantalla);).

NF_InitTiledBgSys(pantalla);
//Inicia el sistema de fondos (sí, es necesario).

NF_LoadTextFont("archivo", "nombre de la fuente", ancho, alto, rotación);
//Cargamos la fuente. En archivo debemos poner (en nuestro caso) "fnt/default" (con comillas) y en nombre de la fuente, un nombre cualquiera, por ejemplo, "normal" (con comillas), que será el nombre que usaremos para identificarla. En ancho y alto pondré 256 y la rotación dejadla en 0.

NF_CreateTextLayer(pantalla, fondo, rotación, nombre para identificarla);
//Esto crea la capa de texto en la pantalla que elijamos, en el fondo que elijamos (0, 1, 2 ó 3. El 0 es el primero y el 3 el que está más atrás) con la rotación dicha y el nombre que usamos anteriormente para identificarla, en mi caso, "normal" (con comillas).

NF_WriteText(pantalla, capa, x, y, "texto");
//Esto escribe en la pantalla que queramos (por fin xD), en la capa deseada y en las posiciones x e y (en tiles). El texto va entre comillas.

NF_UpdateTextLayers();
//Finalmente, pondremos esto (preferiblemente en el while) para que se actualizen las capas de texto y así se muestren.

NF_ClearTextLayer(pantalla, capa);
//Para borrar el texto de la pantalla y capa elegida.

He aquí un ejemplo:

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

consoleDemoInit(); // Inicializa la consola de texto
consoleClear(); // Borra la pantalla
setBrightness(3, 0); // Restaura el brillo

NF_SetRootFolder("NITROFS");
NF_Set2D(1, 0);
NF_Set2D(0, 0);
NF_InitTiledBgBuffers();
NF_InitTiledBgSys(1);
NF_InitTiledBgSys(0);
NF_InitTextSys(0);
NF_InitTextSys(1);
NF_LoadTextFont("fnt/default", "normal", 256, 256, 0);
NF_LoadTextFont("fnt/default", "normal1", 256, 256, 0);
NF_CreateTextLayer(0, 0, 0,"normal");
NF_CreateTextLayer(1, 0, 0,"normal1");
NF_WriteText(0, 0, 0, 0, "Hola mundo!");
NF_WriteText(1, 0, 0, 0, "Hola mundo!");

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

   NF_UpdateTextLayers();

swiWaitForVBlank();//Espero al sincronismo vertical
}

return 0;

}

Como veis, se mostrará un texto que dirá "Hello World" en la parte superior izquierda de las dos pantallas.


Cambiar el color de un texto (opcional)

Muchas veces queremos cambiar el color del texto, por ejemplo, para indicar que habla un personaje diferente. Para esto (aparte de lo anteriormente dicho) usaremos:

NF_DefineTextColor(pantalla, capa, nº de color, rojo, verde, azul);
//Esto define un color mezclando los colores rojo,verde y azul (0-31). Se debe asignar un nº, que será como un ID.

NF_SetTextColor(pantalla, capa, nºcolor)
//Cambia el color del texto.


Texto grande 8x16( Básico)

No me voy a parar mucho en este tema, puesto que no cambia mucho respecto al anterior. Lo que si tengo que destacar es que esta vez cargaremos "font16" en vez de "default".

NF_LoadTextFont16() ;
//Lo mismo que para el normal.

NF_CreateTextLayer16();
//Lo mismo que para el normal.

NF_WriteText16();
//Lo mismo que para el normal.

NF_ClearTextLayer16();
//Lo mismo que para el normal.


Nota: En la última versión se pueden poner tildes sólo en el texto 8 x 16.

Hasta aquí llega el tutorial de los textos. Si tenéis alguna duda o veis que algo está mal explicado, no dudéis en ponerlo aquí abajo, en los comentarios. Nos vemos en el próximo tutorial de gráficos.

¡Alto! ¿Dónde ibas? Te he preparado una tarea. ¿Qué tal si pruebas a mover un texto indefinidamente por la pantalla? Intentadlo y recordad: traducid vuestros pensamientos a C.

Pista: Tendréis que usar variables.
______________________________________________________________________________

Otros tutoriales nflib

1- Conceptos previos e instalación.
3- Gráficos simples fondos & sprites. Utilizar los splashes.
4- Teclas, música & cmaps.
4.1- Maxmod, las librerías de audio de NDS


Última edición por Roberto258 el Miér 31 Jul 2013 - 23:37, editado 5 veces
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1145
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 : 1416

Volver arriba Ir abajo

Re: [Tutorial] NFlib, textos: usarlos y mostrarlos.

Mensaje por pepenillo el Dom 6 Feb 2011 - 19:40

Yo creo que deberias hacer unas explicaciones basicas sobre C, pero no tan basicas como en el tutorial 1.

Yo voy a seguir el tuto, para mi (principiante en C, pero con algunos conocimientos) es bastante facil de seguir.

Espero proximos tutos.

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, textos: usarlos y mostrarlos.

Mensaje por Roberto258 el Dom 6 Feb 2011 - 21:24

pepenillo escribió:Yo creo que deberias hacer unas explicaciones basicas sobre C, pero no tan basicas como en el tutorial 1.

Yo voy a seguir el tuto, para mi (principiante en C, pero con algunos conocimientos) es bastante facil de seguir.

Espero proximos tutos.

Es que,en realidad,los tutoriales de NFlib se limitan prácticamente a conocer y saber usar sus funciones.Como ves,apenas se utiliza poco más de lo que expliqué.De todas maneras,cuando se meta algo,lo explicaré para que lo entendáis.
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1145
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 : 1416

Volver arriba Ir abajo

Re: [Tutorial] NFlib, textos: usarlos y mostrarlos.

Mensaje por pepenillo el Dom 6 Feb 2011 - 21:29

OK, espero con ansias el tuto de los sprites, y algunosmas avanzados

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, textos: usarlos y mostrarlos.

Mensaje por Roberto258 el Miér 31 Jul 2013 - 23:42

Post reeditado. He arreglado los spoilers y he corregido muuchos fallos ortográficos, aparte de ultimar alguna explicación. Además, he añadido imágenes de todos los tipos de texto para que podáis compararlos durante el tuto.

Hello World!
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1145
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 : 1416

Volver arriba Ir abajo

Re: [Tutorial] NFlib, textos: usarlos y mostrarlos.

Mensaje por Kraion el Sáb 3 Ago 2013 - 0:00

Por el momento he hecho la primera parte, la de escribir el texto a secas. y ha salido esto:



Encontré una errata:
Roberto258 escribió:NF_InitTextSys(pantalla);
//Inicia el sistema de fondos de la pantalla que nos de la real gana (debemos haber usado antes NF_InitTextSys(pantalla);).

Debería decir que debemos haber usado antes las funciones NF_InitTiledBgBuffers(); y NF_InitTiledBgSys(pantalla);

Y otra cosa que puede llevar a error es el NF_LoadTextFont("archivo", "nombre de la fuente", ancho, alto, rotación);. Al verlo en el código de ejemplo he pensado "¿Por qué lo declara dos veces si podría usar la misma para las dos pantallas?", y yo, inocente de mí, voy y lo uso sólo una vez, resultando en que en las dos pantallas se mostraba el mismo texto. Resulta que hay que declarar uno por cada NF_CreateTextLayer(pantalla, fondo, rotación, nombre para identificarla); que utilicemos. Tenedlo en cuenta para que no os pase como a mí.
avatar
Kraion
NDS-Master

Masculino
Cantidad de envíos : 584
Localización : どこもです
Empleo/Ocio : Super Duper High School Bio
Humor : きぼう
Opinión sobre NDS-Extra : Me Encanta
Inscripción : 19/02/2011
Reputación : 38
Puntos : 710

Volver arriba Ir abajo

Re: [Tutorial] NFlib, textos: usarlos y mostrarlos.

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.