Ahora aprenderemos a mover un sprite con el stylus como si fuera un ratón.
Crearemos otro ejercicio.
En la carpeta source creamos la carpeta gfx y un sprite, por ejemplo un raton.
Yo use este:
A la paleta la llamaremos sprite 0 y al sprite yo le he llamado raton y lo he guardado en png.
(todo esto explicado en el tutorial anterior, para los que cojen solo lo que les interesa de los tutos)
El pagfx quedaria así:
#TranspColor magenta
#Sprites :
raton.PNG 256colors sprite0
#Backgrounds :
Ahora vamos al código:
// Includes
#include// Include de las PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
// Funcion main()
int main(int argc, char ** argv)
{
PA_Init(); // Iniciamos PA_Lib
PA_InitVBL(); // Iniciamos VBL
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal); // Cargamos la paleta
PA_CreateSprite(0, 0,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 50, 50); //cargamos el sprite
//Bucle
while(1)
{
//actualizo la posición del sprite
PA_SetSpriteXY(0, //pantalla
0, //numero del sprite
Stylus.X-16, //Posicion de X. Le resto 16 porque sino no aparece correctamente el raton respecto al stylus
Stylus.Y-16 //Posicion de Y. Lo mismo
);
PA_WaitForVBL();
}
return 0;
} //Fin de main()
Y ya ta.
Captura:

Descarga:
http://www.megaupload.com/es/?d=O55KH6HN
2. Movimiento de varios sprites (Tipo Mr. Potato)
De aquí pues hize una demo de esto aquí:
http://www.elotrolado.net/hilo_Mr--Potato_899305
MUY IMPORTANTE: Antes de seguir lee esto:
http://www.palib.info/wiki/doku.php?id=day2es
No quiero hacer mas largo el hilo.
Empezamos!!!
Nuevo ejercicio, nueva carpeta de gráficos.
Usaremos el sprite del ejercicio anterior con la misma configuracion de pagfx. (Copy and paste).
Pasamos al código:
// Includes
#include// Include de las PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
// Funcion main()
int main(int argc, char ** argv)
{
PA_Init(); // Iniciamos PA_Lib
PA_InitVBL(); // Iniciamos VBL
u8 i = 0; // variable
// iniciamos la paleta
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);
for //una variante de while (bucle)
//condicion
(i = 0; // si el valor de i (variable) es igual a 0
i < 4; // y es menor que 4...
i++) // sube su valor un numero
/*Asi de golpe no tiene mucho sentido y es muy largo de explicar, recomiendo leer el
enlace de mas arriba*/
//creamos los sprites
PA_CreateSprite(0, i,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 4, 3);
// Bucle
while (1)
{
for (i = 0; i < 4; i++) // lo mismo que mas arriva
PA_MoveSprite(i); // esto hace que el sprite que quieras, por ejemplo, el numero uno, lo pones en los () y el sprite que tenga ese numero se puede mover, lo sustituimos por la variable para mover todos los sprites creados.
PA_WaitForVBL();
}
return 0;
} // Fin de main
Y cada ratón se mueve por su cuenta.
Captura:

Descarga:
http://www.megaupload.com/es/?d=5OKFSWD4
3. Movimiento de un sprite con el pad
Nuevo ejercicio, otra vez el mismo sprite y empezamos.
Código:
//Includes
#include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
s32 x = 0; s32 y = 0; // Declaramos la posicion del sprite
//Funcion main()
int main(void){
PA_Init(); //Iniciamos Palib
PA_InitVBL(); // Iniciamos VBL
//Cargamos la paleta
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);
//Creamos el sprite
PA_CreateSprite(0, 0,(void*)raton_Sprite, OBJ_SIZE_32X32,1, 0, 0, 0);
//Bucle
while(1){
// Actualizamos la posicion del sprite con la del pad
x += Pad.Held.Right - Pad.Held.Left;
y += Pad.Held.Down - Pad.Held.Up;
// Actualizamos la posicion del sprite
PA_SetSpriteXY(0, 0, x, // Posición de x (declarada anteriormente)
y); // Posición de y...
PA_WaitForVBL();
}
return 0;
} //Fin de main
Y asi moveremos el sprite con el pad.
Captura:
Descarga:
http://www.megaupload.com/es/?d=L46DIMPJ
También puedes usar las teclas y todo, hay un ejemplo en la ruta C:\devkitPro\PAlibExamples\Input\Pad.
Y ahí se queda la lección.
------------------------------Tarea-----------------------------------------
Intentad hacer un mini OS, se trata de un fondo y el raton (nada del otro mundo).
Captura:
No lo pongo por ahora a descarga.
Quiero ver vuestras capturas propias.
Salu2
El proximo... me lo pensare. xD (Dadme ideas)
![karateka [chiu]](./images/smilies/nuevos2/karateka.gif)

