Pues eso, que he acabado mi primer programa con el palib. Es muy simple y sólo sirve para mover al personaje por la pantalla y que suenen cuatro sonidos de na, pero me hacía ilu ponerlo aquí
Descargar ¡Mueve a Zippo!// Includes
#include <PA9.h> // Include for PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "choque.h"
#include "moonlight.h"
#include "zippo.h"
// Function: main()
int main(int argc, char ** argv)
{
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
PA_InitSound(); // Inicia sonido
PA_SetSoundVol(200);
PA_PlaySimpleSound (1,moonlight);
PA_InitText (0,0); // Inicia Texto
PA_SetTextTileCol (0,2); //color texto
//cargamos fondos
PA_EasyBgLoad(0,3,bg0);
PA_Init16bitBg(1,3);
PA_Load16bitBitmap(1,bg1_Bitmap);
// variables x, y para posición de sprites
s32 x=112, y=80;
bool up=true, down=false, left=false, right=false, select=false, bgs = true;
int counter = 0;
//cargamos paletas
PA_LoadSpritePal(0,0,(void*)zippopal_Pal);
//cargamos sprite inicial y animamos
PA_CreateSprite(0,0,(void*)zippo_Sprite,OBJ_SIZE_32X32,1,0,x,y);
PA_SetSpritePrio(0,0,2); // coloca el sprite en la capa 2 para que quede detrás del texto
PA_StartSpriteAnim(0,0,0,1,5);
// Infinite loop to keep the program running
while (1)
{
while (Pad.Held.Down){ // bajar
//animamos y actualizamos posición
if (down == false){
down=true;
up=false;
left=false;
right=false;
PA_StopSpriteAnim(0,0);
PA_StartSpriteAnim(0,0,0,1,5);
}
if (x<=224 && y<=160 && x>=0 && y>=0){ //evitamos que se salga de la pantalla
y+=1;
PA_SetSpriteXY(0,0,x,y);
}else{
PA_PlaySimpleSound(0,choque);
if (x>224) x=224;
if (y>160) y=160;
if (x<0) x=0;
if (y<0) y=0;
}
//salimos del while
break;
}
while (Pad.Held.Up){ // subir
//animamos y actualizamos posición
if (up == false){
down=false;
up=true;
left=false;
right=false;
PA_StopSpriteAnim(0,0);
PA_StartSpriteAnim(0,0,2,3,5);
}
if (x<=224 && y<=160 && x>=0 && y>=0){
y-=1;
PA_SetSpriteXY(0,0,x,y);
}else{
PA_PlaySimpleSound(0,choque);
if (x>224) x=224;
if (y>160) y=160;
if (x<0) x=0;
if (y<0) y=0;
}
//salimos del while
break;
}
while (Pad.Held.Left){ // izquierda
//animamos y actualizamos posición
if (left == false){
down=false;
up=false;
left=true;
right=false;
PA_StopSpriteAnim(0,0);
PA_StartSpriteAnim(0,0,4,5,5);
}
if (x<=224 && y<=160 && x>=0 && y>=0){
x-=1;
PA_SetSpriteXY(0,0,x,y);
}else{
PA_PlaySimpleSound(0,choque);
if (x>224) x=224;
if (y>160) y=160;
if (x<0) x=0;
if (y<0) y=0;
}
//salimos del while
break;
}
while (Pad.Held.Right){ // derecha
//animamos y actualizamos posición
if (right == false){
down=false;
up=false;
left=false;
right=true;
PA_StopSpriteAnim(0,0);
PA_StartSpriteAnim(0,0,6,7,5);
}
if (x<=224 && y<=160 && x>=0 && y>=0){
x+=1;
PA_SetSpriteXY(0,0,x,y);
}else{
PA_PlaySimpleSound(0,choque);
if (x>224) x=224;
if (y>160) y=160;
if (x<0) x=0;
if (y<0) y=0;
}
//salimos del while
break;
}
if (Pad.Newpress.Select){
// Mostramos creditos
if (select == false){
select=true;
x = 190; y = 73;
PA_SetSpriteXY(0,0,x,y);
PA_OutputSimpleText (0,1,1,"Musica:");
PA_OutputSimpleText (0,1,2," Walking under the Moonlight");
PA_OutputSimpleText (0,1,3," por Eglomer");
PA_OutputSimpleText (0,1,5,"Voz de Zippo:");
PA_OutputSimpleText (0,1,6," Tsuki");
PA_OutputSimpleText (0,1,8,"Graficos:");
PA_OutputSimpleText (0,1,9," Eglomer");
PA_OutputSimpleText (0,1,11,"Programacion:");
PA_OutputSimpleText (0,1,12," Eglomer");
PA_OutputSimpleText (0,1,14,"Basado en:");
PA_OutputSimpleText (0,1,15," Kaizoku no Nikki");
PA_OutputSimpleText (0,9,16," (Diario de un Pirata)");
PA_OutputSimpleText (0,1,17,"www.kaizokunonikki.blogspot.com");
}else{
select=false;
PA_ClearTextBg(0);
}
}
if (Pad.Newpress.Start){
x = 190; y = 73;
PA_SetSpriteXY(0,0,x,y);
PA_ClearTextBg(0); // por si están los créditos activos
PA_StopSpriteAnim(0,0);
PA_OutputSimpleText (0,12,11,"PAUSA");
PA_WaitFor(Pad.Newpress.Start); //pausamos hasta que vuelva a apretar y después reanudamos
if (down == true) PA_StartSpriteAnim(0,0,0,1,5);
else if (up == true) PA_StartSpriteAnim(0,0,2,3,5);
else if (left == true) PA_StartSpriteAnim(0,0,4,5,5);
else if (right == true) PA_StartSpriteAnim(0,0,6,7,5);
PA_ClearTextBg(0);
}
if (Pad.Newpress.L)
if (bgs == true){
PA_StopSound (1);
PA_SetTextTileCol (0,3);
PA_OutputSimpleText (0,1,1,"Cancion detenida"); //Bucle para esperar unos seg antes de borrar el texto
for (counter = 0; counter < 40; counter++)
PA_WaitForVBL();
PA_SetTextTileCol (0,2);
PA_ClearTextBg(0);
bgs = false;
}
if (Pad.Newpress.R)
if (bgs == false){
PA_PlaySimpleSound (1,moonlight);
PA_SetTextTileCol (0,3);
PA_OutputSimpleText (0,1,1,"Walking under the Moonlight");
for (counter = 0; counter < 40; counter++) //Bucle para esperar unos seg antes de borrar el texto
PA_WaitForVBL();
PA_SetTextTileCol (0,2);
PA_ClearTextBg(0);
bgs = true;
}
if (Pad.Newpress.A || Pad.Newpress.B || Pad.Newpress.X || Pad.Newpress.Y)
PA_PlaySimpleSound(2,zippo);
while (Stylus.Held){
// Actualizamos la posición del sprite con la del pad
PA_MoveSprite(0);
x=Stylus.X-16;
y=Stylus.Y-16;
PA_SetSpriteXY(0,0,x,y);
}
PA_CheckLid(); // Pausa el juego si se cierra la pantalla de la DS
PA_WaitForVBL();
}
return 0;
} // End of main()