Problema con un codigo de PAlib (necesito ayuda!!)

hola,al estar programando con PAlib (intento meter dos sprites diferentes para k se muevan con la tactil) he tenido fallos respecto a lo que yo intento...

una vez me ha salido todos los sprites iguales, luego otra me han salido 3 de un color, luego tres del otro color, ya no se k hacer, por eso recurro a vosotros, y espero que me ayudeis, aqui dejo el codigo por si alguen me puede ayudar

// Includes
#include <PA9.h>
#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;

for
(i = 0; i < 16; i++)
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);

PA_CreateSprite(0, 0,(void*)raton1_Sprite, OBJ_SIZE_32X32,1, 0, 4, 3);
PA_CreateSprite(0, 1,(void*)raton1_Sprite, OBJ_SIZE_32X32,1, 0, 20, 30);
PA_CreateSprite(0, 2,(void*)raton1_Sprite, OBJ_SIZE_32X32,1, 0, 30, 40);
PA_CreateSprite(0, 3,(void*)raton2_Sprite, OBJ_SIZE_32X32,1, 0, 40, 50);
PA_CreateSprite(0, 4,(void*)raton2_Sprite, OBJ_SIZE_32X32,1, 0, 50, 60);
PA_CreateSprite(0, 5,(void*)raton2_Sprite, OBJ_SIZE_32X32,1, 0, 10, 40);




// Bucle
while (1)
{

for (i = 0; i < 16; i++) PA_MoveSprite(i);

PA_WaitForVBL();
}   

return 0
} // Fin de main()


este es el ultimo codigo que he probado...



Si me podeis ayudar os estaré muy agradecido. [tadoramo] [tadoramo] [tadoramo] [tadoramo] [tadoramo] [tadoramo]
Utilizas una paleta de colores que no corresponde a los sprites cargados posteriormente. Por eso los sprites que te pintan por pantalla tienen los colores que les rota.
toma, usa este, que es el que uso yo para las tres en raya, y mis proyectos...
// Includes
#include <PA9.h>       // Include for PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

// Function: main()
int main(int argc, char ** argv)
{
   u8 i;
   
   PA_Init();    // Initializes PA_Lib
   PA_InitVBL(); // Initializes a standard VBL
   
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);
PA_LoadSpritePal(0, 1, (void*)sprite1_Pal); 

PA_CreateSprite(0, 0,(void*)ficha1_Sprite, OBJ_SIZE_32X32,1, 0, PA_Rand()%192,PA_Rand()%128);
PA_CreateSprite(0, 1,(void*)ficha1_Sprite, OBJ_SIZE_32X32,1, 0, PA_Rand()%192,PA_Rand()%128);
PA_CreateSprite(0, 2,(void*)ficha1_Sprite, OBJ_SIZE_32X32,1, 0, PA_Rand()%192,PA_Rand()%128);
PA_CreateSprite(0, 3,(void*)ficha2_Sprite, OBJ_SIZE_32X32,1, 1, PA_Rand()%192,PA_Rand()%128);
PA_CreateSprite(0, 4,(void*)ficha2_Sprite, OBJ_SIZE_32X32,1, 1, PA_Rand()%192,PA_Rand()%128);
PA_CreateSprite(0, 5,(void*)ficha2_Sprite, OBJ_SIZE_32X32,1, 1, PA_Rand()%192,PA_Rand()%128);

   // Infinite loop to keep the program running
   while (1)
   {
      PA_WaitForVBL();

      for(i=0;i<4;i++) PA_MoveSprite(i);
      
   }
   
   return 0;
} // End of main()


solo tienes que cambiar ficha1 por raton1 y ficha2 por raton2 o como se llamen tus sprites
Ese codigo que has puesto, lo que hace es cargar los sprites en posiciones aleatorias y despues las mueve usando el stylus... No creo que eso sea lo que quiera...

Por cierto estaria bien que pusieses PA_InitRand(); al principio del codigo ya que asi consigues que los numeros aleatorios sean mas exactos... Tambien estaria bien usar una sentencia for para crear los sprites como has hecho con lo de mover los sprites.

Seria:


#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(int argc, char ** argv)
{
u8 i;

PA_Init();
PA_InitVBL();
PA_InitRand()

PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);
PA_LoadSpritePal(0, 1, (void*)sprite1_Pal);
for(i=0;i<6;i++){
PA_CreateSprite(0, i,(void*)ficha1_Sprite, OBJ_SIZE_32X32,1, 0, PA_Rand()%192,PA_Rand()%128);
}

while (1)
{

for(i=0;i<4;i++) PA_MoveSprite(i);
PA_WaitForVBL();
}

return 0;
}


Mucho mas corto el codigo no?
amchacon escribió:Ese codigo que has puesto, lo que hace es cargar los sprites en posiciones aleatorias y despues las mueve usando el stylus... No creo que eso sea lo que quiera...

Por cierto estaria bien que pusieses PA_InitRand(); al principio del codigo ya que asi consigues que los numeros aleatorios sean mas exactos... Tambien estaria bien usar una sentencia for para crear los sprites como has hecho con lo de mover los sprites.

Seria:


#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(int argc, char ** argv)
{
u8 i;

PA_Init();
PA_InitVBL();
PA_InitRand()

PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);
PA_LoadSpritePal(0, 1, (void*)sprite1_Pal);
for(i=0;i<6;i++){
PA_CreateSprite(0, i,(void*)ficha1_Sprite, OBJ_SIZE_32X32,1, 0, PA_Rand()%192,PA_Rand()%128);
}

while (1)
{

for(i=0;i<4;i++) PA_MoveSprite(i);
PA_WaitForVBL();
}

return 0;
}


Mucho mas corto el codigo no?


Lo probaré a ver que tal amchacon, pero yo mientras que lo probaba me di cuenta de una cosa, hay que cambiar:

for(i=0;i<4;i++) ----> for(i=0;i<6;i++)

Porque si no, solo se mueven las 4 primeras fichas, las demas se quedan sin moverse XD
4 respuestas