En esta segunda parte del tutorial vamos a explicar los tipos de variables y algunas funciones de PAlib.
Si quieres ver teoría sobre las variables y lo que ocupan lean esto: Tipos de Datos(Tutorial por Tanos)
Lo primero de todo: ¿Qué tipos de variables existen?:
Con todos estos tipos de variables se pueden hacer sumas, restas, multiplicaciones, divisiones, comparaciones, etc.
Las variables del tipo void albergan unas acciones definidas por el usuario. Puede contener tantas acciones como se desee.
Para declarar variables es necesario poner antes el tipo de variable. Por ejemplo:
int nombre_variable = valor;
La base en código de todo programa es esta:
#include <PA9.h>//Se incluye la libreria que hace que PAlib funcione int main(){//Aquí se inicia una funcion, como ven es un int PA_Init();//Aqui se inician las librerias PAlib PA_InitVBL();//Aqui se inicia un bucle de PAlib, el cual hace que funcione bien el programa while(1){//Aqui se crea un bucle el cual mientras el valor que tiene dentro del parentesis sea así hace lo que tiene dentro PA_WaitForVBL();//Aqui se hace uso del bucle iniciado anteriormente para mantener el programa funcionando } return 0;//Aqui se devuelve unvalor } //Se cierra el main
Si lo compilan podrán comprobar que no se ve nada. Pero gracias a eso un programa se puede mantener en funcionamiento en la NDS.
Como todos saben todos/casi todos los programas escriben texto plano en pantalla. Las funciones que se definen a continuacion son simples.
Lo primero para poder dibujar texto en una pantalla deberán poner:
PA_InitText(pantalla,fondo_elegido);
Donde pone pantalla deberán escribir un número(0 o 1) el cual corresponde a una pantalla de la Nintendo DS.
1: Pantalla de arriba
0: Pantalla de abajo
Donde pone fondo_elejido deben escribir un número del 0 al 3. Por el momento esto no lo explicaré a fondo pues en este capítulo no usaremos los fondos.
Despues de iniciar el texto ya pueden escribirlo en pantalla.
Hay dos maneras:
Simple y Con Variables
La simple es así:
PA_OutputSimpleText(pantalla,posicionx,posiciony,"texto entre comillas");
En pantalla ponen el número correspondiente a la pantalla elejida. en posicionx ponen un número de 0-255 y en posiciony ponen un número de 0-191.
Donde pone texto entre comillas ponen el texto que quieren que muestre en pantalla. El texto que escriban debe de ir entre comillas, porque si no el compilador lo interpreta como una variable y dice que no existe.
La compuesta es así:
PA_OutputText(pantalla,posicionx,posiciony,"Posicion 1 : %d Posicion 2 : %d", variable1, variable2);
Como observan aquí existen más argumentos.
Si leen detenidamente puse %d esto se usa para mostrar el valor de una variable del tipo double.
Para mostrar otro tipo de varible solo cambien esa d por la primera letra del tipo de variable.
Para mostar un float deberán poner después de %f un número, el cual será los decimales que se mostrarán.
Donde pone variable1 lo reemplazan por el nombre de la variable. Se pueden mostrar solo 1 o más de dos a la vez, siempre y cuando estén separadas por una coma y un espacio.
Ojo. Para los char no podrás usar %c deberás usar %s.
Los Sprites pueden ser de tres modos de color diferentes:
Todos los Sprites deben tener este tamaño. A diferencia del PC o posiblemente, de otras consolas, la NDS tiene una limitación en cuanto al tamaño de los Sprites.
| 8 | 16 | 32 | 64 | |
|---|---|---|---|---|
| 8 | 8×8 | 16×8 | 32×8 | |
| 16 | 8×16 | 16×16 | 32×16 | |
| 32 | 8×32 | 16×32 | 32×32 | 64×32 |
| 64 | 32×64 | 64×64 |
Los Sprites no se pueden usar así tal cual, hay que convertirlos al formato de la NDS por lo que, para convertirlos debemos ir a C:\devkitPro\PAlib\Tools\PAGfx luego copiamos el contenido de la carpeta, nos vamos hacia nuestro proyecto y abrimos la carpeta source creamos una llamada gfx y lo pegamos dentro.
Ahora iniciamos el PAGfx Fronted. Damos en Add Images/Files y buscamos los sprites que queremos agregar. Luego en la derecha podemos elejir el color tansparente. Solo se puede Magenta, Blanco y Negro. Cuando hayamos añadido los sprites que queramos damos en Save and Convert.
Una vez termine ya tendremos nuestros sprites convertidos completamente.
Como dibujar el Sprite en Pantalla:
Lo primero de todo será añadir esto debajo de #include <PA9.h>:
#include "gfx/all_gfx.h" #include "gfx/all_gfx.c"
Luego para dibujar el Sprite:
Primero de todo cargamos la paleta:
PA_LoadSpritePal(pantalla, idpaleta,(void*)nombresprite_Pal);
En pantalla se debe poner un número(0 o 1) que será la pantalla. En idpaleta deberemos poner el ID de la paleta, esto se usará para:
Cuando cargamos una paleta hay que asignarle un número para que al crear un Sprite podamos usar ese número para acceder a la paleta, de lo contrario el Sprite no se dibujaría o no se vería bien.
Nunca puede haber dos paletas con el mismo número.
Luego pone (void*) eso no lo quiten si no no podrán usarlo, luego donde pone nombresprite introducen el nombre del Sprite sin quitarle _Pal.
Luego para crear porfin el Sprite:
PA_CreateSprite(pantalla,idsprite,(void*)nombresprite_Sprite,OBJ_SIZE_TAMAÑO,1,idpaleta,posicionx, posiciony);
Los dos primeros argumentos ya sabrán, pero les explico:
En pantalla ponen el número de la pantalla. En idsprite(se usa para lo mismo que el idpaleta de la funcion PA_LoadSpritePal)ponemos el ID del sprite el cual se identificará por este número.
Luego pone (void*) eso no lo quiten si no no podrán usarlo, luego donde pone nombresprite introducen el nombre del Sprite sin quitarle _Sprite.
en OBJ_SIZE_TAMAÑO sustituyen TAMAÑO por uno de los tamaños especificados anteriormente.
Ese 1 lo dejamos así.
En idpaleta ponemos el número que le asignemos anteriormente a la paleta. Luego en posiciónx ponen la posicion horizontal en la que quieren que salga y en posiciony la posicion vertical en la que quieren que salga.
No se si las explicaciones serán las más acertadas, pues tampoco soy profesional en esto.
Comentarios
Problema
Bien, el tutorial "lo he pillao", pero no encuentro el programa para codear. En PC usaba el Dev-C++, pero aquí no existe el programa que se usaba (vham). ¿Dónde está el programa para codear?
-Hola, soy Guybrush Threepwood
-¡Mira detras de ti, un mono de tres cabezas!
-¿Cuántos robles roería un roedor si los roedores royesen robles?
-(Pirata)¡Todos mis enemigos fueron aniquilados
-(Guybrush)Con tu aliento s
Se llama programmers notepad,
Se llama programmers notepad, pero puedes usar un bloc de notas perfectamente.
Salu2tS!
Eso...
es para el PAlib...
Si no sabes nada de programacion, no tienes nada que hacer con eso...
Eso no es programar...
Eso es coger un example de cualquier tutorial y compilarlo...
Si no sabes de C o C++, olvidate...
No intento desanimarte...
Pero ten en cuenta que programar es mucho mas dificil que compilar un Hello World. Por algo se empieza, si, pero lo mejor es siempre empezar aprendiendo C o C++, ya que es muy facil agobiarse si empiezas sin programar...
Link de la imagen/firma aprobados por Chuck Norris
Aqui va...
El rincon del C, ahi puedes aprender C y C++ muy facil (dentro de lo que cabe...).
Que tal me gusto mucho el
Que tal me gusto mucho el tutorial solo que no puedo utilizar sprites, hago lo que dice pero no puedo correr el programa PAGfx Fronted, ya que cada que lo intento correr me dice que no se encuentra el directorio o algo asi y ahi otro parecido que se llama PAGfc Fronted (algo asi) y ese si lo abre pero cuando quiero convertir un sprite para que funcione en la ds me dice que hay un error....estoy haciendo algo mal o que onda??
les agradesco la ayuda...
Saludos!!!
"Walter"
Edit: ya pude...no se como pero ya pude =D
No es que yo sepa mucho de
No es que yo sepa mucho de C, pero me lío un montón. ¿Con qué programa hago los sprites?
en partes como esta:
En pantalla ponen el número correspondiente a la pantalla elejida. en posicionx ponen un número de 0-255 y en posiciony ponen un número de 0-191.
que pongo el numero que quiera?
¡Ayuda a mi bruto! http://Minichuscoo.ElBruto.es/
Me pueden dar permisos para
Me pueden dar permisos para poner todos los códigos con la etiqueta code ?
Vale estoy siguiendo tu tuto para un sprite nuevo
EDITO:
u8 posx =112;
u8 posy =80;
PA_EasyBgLoad(0, 3, fondo);
PA_LoadSpritePal(0, 0,(void*)heroe_Pal);
PA_CreateSprite(0,1,(void*)heroe_Sprite, OBJ_SIZE_32x32, 1, 0, posx, posy);
Esto es lo que tengo y al compilar me da error
EDITADO por RuGuEr: El uso abusivo de negrita no está permitido. Por favor, revise las normas de la comunidad. Gracias.
Català, Orgullós de ser-ho
Visca Catalunya!
Lo siento pikus, pero no por
Lo siento pikus, pero no por que seas editor tienes derecho a abusar de la negrita.
u8 posx = 112; u8 posy =
u8 posx = 112;
u8 posy = 80;
PA_EasyBgLoad(0,3,fondo);
PA_LoadSpritePal(0,0,(void*)heroe_Pal);
PA_CreateSprite(0,1,(void*)heroe_Sprite, OBJ_SIZE_32X32, 0,0,posx, posy);
Supongo que así irá bien. De todas maneras mandame el error que te da al compilarlo.
Ten en cuenta que el Sprite heroe debe de ser de las proporciones(ancho x alto)que indicas en OBJ_SIZE_32X32 sea de 32 x 32 recuerda que todos los sprites deben de tener una proporcion determinada.
me sale el mismo error.... :'(
Aqui lo tienes:
Link para verlo mejor: http://img7.imageshack.us/img7/158/pantallaerror.jpg
Vamos a ver en las acciones
Vamos a ver en las acciones que trae palib no puedes cambiar ni una sola palabra,ni siquiera una sola mayuscula si no no te reconoce el codigo.
Lo que quiero decir es que la X que hay entre los dos 32 esta en minuscula y es en mayuscula seria asi:
OBJ_SIZE_32X32
Por esa tonteria ya no ha podido reconocerlo,lo que no se es como los demas que lo habeis visto antes que yo no lo hayais notado,creia qeu el mas n00b era yo...
salu2
$i êrê§ ¢âÞâz Ðê £êêr ê§T0 Þ0Ðrâ§ £êêr ê§T0 0Tr0 §iñ Þr0ߣêmâ§
¡Es posible generar Scenebitos!
Si que lo note, en el codigo
Si que lo note, en el codigo que yo le di biene con la X en mayuscula.
Si pero lleva 2 dias
Si pero lleva 2 dias programando,si no le indicas el error de primera no lo puede ver,aunque no pasa nada ya esta solucionado.
salu2
$i êrê§ ¢âÞâz Ðê £êêr ê§T0 Þ0Ðrâ§ £êêr ê§T0 0Tr0 §iñ Þr0ߣêmâ§
¡Es posible generar Scenebitos!
Problema
Otro problem:
Aki teneis: http://img188.imageshack.us/img188/25/problemau.jpg
Ya veo que nadie lo sabe asi
Ya veo que nadie lo sabe asi que te contestare yo(al estilo house):
Suponiendo como nos dice el error,el sintoma se encuentra en un bitmap que al parecer tiene problemas con la paleta,si te das cuenta el bitmap no esta en la carpeta gfx porque pagfx te lo habria denegado(ya sabemos como es pagfx con estos asuntos),tampoco podria haber sido el codigo porque lo habria informado de otra manera,a sido en el momento final cual el nds ya estaba casi listo asi que el bitmap que solo a podido ser es el ¡¡LOGO.bmp!! el cual solo permite 16 colores,en un intento de perfeccion del logo habras puesto mas colores y habras chafado el compilado final,el causante de los sintomas es una paleta que pasa de la raya.
Salu2
$i êrê§ ¢âÞâz Ðê £êêr ê§T0 Þ0Ðrâ§ £êêr ê§T0 0Tr0 §iñ Þr0ߣêmâ§
¡Es posible generar Scenebitos!
Vale ya va gracias ;)
Ya ta ^^
Gracias
El mismo error te lo dice
a un tal Bitmap (tu sabrás lo que es) no le declaraste la paleta.
Si es lo que antes llamabas heroe_Sprite, después del OBJ_SIZE_32X32 va 1,0 no 0,0
Salu2
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.
¿Estas seguro?el heroe no
¿Estas seguro?el heroe no tiene porque ser un bitmap (ya esto ydando demasiadas pistas).
salu2
Gracias
Ahora pruebo y te digo ;)
Salu2 y Graxias ^^
EDITO: No funciona, mismo error :(
Si nos aclaras
qué es el Bitmap, a lo mejor veríamos mejor el error.
Salu2
Facil facil!!
Aja ,ya lo he visto
,pero voy a esperar para dejar tiempo a los demas coders,no quiero ser el unico que le conteste,pero si nadie sabe el error te lo digo tranquilo =D.
salu2
$i êrê§ ¢âÞâz Ðê £êêr ê§T0 Þ0Ðrâ§ £êêr ê§T0 0Tr0 §iñ Þr0ߣêmâ§
¡Es posible generar Scenebitos!
Por un casual
incluirías el all_gfx.c y all_gfx.h en los include, ¿verdad?
si ya estan
Si ya estan incluidos ;)
Salu2
Entonces
lo único que se me ocurre es que no puedes usar el mismo nombre para el sprite y para la paleta, porque lías términos. Prueba a cambiar el nombre al sprite, y después vuélvelo a transformar con el PAgfx (si es el que usas).
Salu2
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.
El nombre del Sprite y de la
El nombre del Sprite y de la Paleta siempre son los mismos, solo que con el prefijo _Sprite o _Pal.
Y perdon que no respondiera, estaba viendo una cosa.
sorry por la negrita
que no se me quita noseporque... :S
Gracias
Gracias por linkear a mis tutoriales (a los de toda la comunidad pues :P).
Saludos tío.
Esto parece
Esto es muy parecido a un script del Second Life.
¿A qué te refieres con muy
¿A qué te refieres con muy parecido?
Esto es PAlib.
Muchas Gracias...
No se cunato llevas haciendo los tutoriales pero algo si te digo MUCHAS GRACIAS!!! por mi falta de tiempo habia leido los tutos de la página oficial de PAlib pero no entiendo mucho de ello y me hice un lío...
Ahora estoy con un proyecto en mente y me falta bastante para aprender a programarlo, con estos tutos espero poder comprender bien los datos y poder así realizar mi proyecto.
no me sale:(
porfavor diganme lo que pasa...
no me va... e copiado lo que decias mas arriba:
#include <PA9.h>
int main(){
PA_Init();
PA_InitVBL();
While(1){
PA_WaitForVBL();
}
return 0;
}
pero al darle a build... me da error
que pasa?
Aver lo primero While es sin
Aver lo primero While es sin mayuscula:
while(1){
si te fijas en el tutorial está en minuscula...
Simplemente con que cabies eso funcionará.
Es porque lo identifica como una declaración implícita de while y luego como variable...
pregunta
que programa hay que iniciar para empezar a escribir ???
y como compilo??
Empieza desde cero, verás
Empieza desde cero, verás los programas necesarios.
Yo por ejemplo hasta lo de
Yo por ejemplo hasta lo de hello world lo he copilado bien, el problema es que no veo nada donde poder empezar a escribir codigo... (Y he dado vueltas y vueltas por las carpetas)
No se si te refieres
a archivos (main.c, otros archivos para hacer lo de multiarchivo...) o a un programa con el que codear.
Si es lo primero, estan en la carpeta source del proyecto. Si es lo segundo, busca el vham en la carpeta tools de la carpeta PAlib, dentro, a su vez, de la carpeta devkitpro, aunque no se si la ultima version lo incluye. Sino lo incluye, busca por la seccion de PC, que seguro que habra algun programa...
Link de la imagen/firma aprobados por Chuck Norris