Porfin vamos a programar algo en serio, nos volvemos a ir a la carpeta C:\devkitPro\nflib y copiamos la carpeta template a otro lugar pero con una condición, debe ser una carpeta sin espacios y sin caracteres especiales como `´’ñ $& o cualquier otro cuanque - _ si son aceptados, por ejemplo un directorio valido seria: C:\ds\template un ejemplo de directorio no valido seria C:\ds&dev\..dev.ñ
Recomiendo descargar el notepad++ para una programación mas facil.
Una vez comprendido esto con el template copiado le cambiaremos el nombre por el de t01 y copiamos otra vez el template para tener uno a mano siempre, os dejo la imagen para que veais como va.
Ahora cogemos entramos en t01, y os voy a explicar que hace cada cosa.
Data: carpeta de archivos internos(no tiene nada que ver con el nitrofiles y rara vez lo usaremos.).
Nflib: carpeta interna de la librería, no se debe tocar nunca.
Nitrofiles: carpeta de los archivos internos del filesystem, aquí meteremos los archivos.
Release: Carpeta de una versión antigua, no la toqueis.
Sources: Carpeta donde iran todos los codes del juego.
Clean.bat archivo para borrar lo compilado
Compile.bat: archivo para compilar el proyecto.
Icon.bmp Icono del juego, mas adelante os explicare como editar el icono y que lo acepte la ds sin cosas raras
Abrimos la carpeta source y abrimos el archivo main.cpp, y nos saldrá esto:
/*
-------------------------------------------------
NightFox's Lib Template
Requiere DevkitARM R28
Requiere NightFox's Lib
Codigo por NightFox
http://blogs.gamefilia.com/knightfox
Inicio 10 de Octubre del 2009
(c)2009 - 2010 NightFox & Co.
-------------------------------------------------
*/
/*
-------------------------------------------------
Includes
-------------------------------------------------
*/
// Includes c/c++
#include <stdio.h>
// Includes propietarios NDS
#include <nds.h>
// Includes librerias propias
#include <nf_lib.h>
/*
-------------------------------------------------
Main() - Bloque general del programa
-------------------------------------------------
*/
int main(int argc, char **argv) {
consoleDemoInit();// Inicializa la consola de texto
consoleClear();// Borra la pantalla
setBrightness(3, 0);// Restaura el brillo
iprintf("\n Hello World!");
// Bucle (repite para siempre)
while(1) {
swiWaitForVBlank();// Espera al sincronismo vertical
}
return 0;
}
Os explicaré cada parte por separado:
/*
-------------------------------------------------
NightFox's Lib Template
Requiere DevkitARM R28
Requiere NightFox's Lib
Codigo por NightFox
http://blogs.gamefilia.com/knightfox
Inicio 10 de Octubre del 2009
(c)2009 - 2010 NightFox & Co.
-------------------------------------------------
*/
Esto es un comentario de la librería, puedes quitarlo si quieres no surge ningún efecto.
/*
-------------------------------------------------
Includes
-------------------------------------------------
*/
// Includes c/c++
#include <stdio.h>
// Includes propietarios NDS
#include <nds.h>
// Includes librerias propias
#include <nf_lib.h>
Estos son los incluyes predefinidos por la librería, ya veremos lo de poner mas o ir quitando. De momento con los predeterminados vamos bien.
int main(int argc, char **argv)
Esta es la declaración del main, lo que primero ejecuta.
consoleDemoInit();// Inicializa la consola de texto
consoleClear();// Borra la pantalla
setBrightness(3, 0);// Restaura el brillo
iprintf("\n Hello World!");
Estas son funciones de libnds para cargar un texto de estilo ms-dos, i escribe lo de la ultima funcion. La primera lo inicia, la segunda limpia la pantalla, la tercera hace que puedas ver las pantallas. Y la ultima escribe.
// Bucle (repite para siempre)
while(1) {
swiWaitForVBlank();// Espera al sincronismo vertical
}
return 0;
Esto es un bucle, básicamente se repetise siempre que lo que esta entre paréntesis (1) sea lo que pone, en este caso mientras 1 sea 1 el programa lo repetira, hay distintos tipos de bucles. while( lo que sea lo que sea ej: variable==5 ){
El swiWaitForVBlank(); coordina a los 60 frames por segundo, y ademas completa algunas funciones de libnds. Es obligatorio.
Y el return 0; lo que hace es devolver un valor, porque todas las funciones que no sean void, deben llevar un retrun.
Os voy a explicar un comando que usaremos que es de c, es el sprintf un comando que actualiza una variable de texto con otras variables.
Aunque el pritf lleva funciones preparadas para esto usaremos para luego poder usar la funcion interna de nflib que es mas completa y ademas podemos elegir el lugar exacto donde ponerlo, y ademas podemos usar la ñ y otros caracteres con acentos y mas.
Os recomiendo leer tutos de c para poder usar las variables, yo solo os dare el funcinamiento de las nuevas funciones.
[spoiler=Tarea3:] Vais a hacer que el programa lea un numero de una variable y lo escriba en la pantalla desde el comando sprintf. Usareis estas variables:
char text[32];
int variable=14;
sprintf(text,”La variable es:%d ”,variable);
Y luego lo imprimis usando printf(text);
Por lo que mandareis el source de un code por mp que imprima una variable en la pantalla, pero no lo metais en el bucle.
Con eso será suficiente. Aquí os pondré nota, antes del siguiente tuto, os podre un code para que lo corrijais los errores y me lo mandais por mp, con eso sera suficiente, en el siguiente tuto os explicare un poco mas de teoria, pero debeis leeros un tuto de c para que podais seguir con los siguientes tutos y lo entendais.