[Duda Palib] El texto se me crea infinitamente

Hola estoy intentando que un texto se mueva en diagonal por la pantalla pero no lo consigo. Se me crea muchas veces el mismo texto en diagonal. ¿alguna solucion?
Codigo:
// Includes
#include <PA9.h>       // Include for PA_Lib

u8 x;
u8 y;

// Function: main()
int main(int argc, char ** argv)
{
   PA_Init();    // Initializes PA_Lib
   PA_InitVBL(); // Initializes a standard VBL
   PA_InitText(1,0);


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

      ++x;
      ++y;
      PA_OutputSimpleText(1,x,y,"Hola");

      PA_WaitForVBL();
   }
   
   return 0;
}
Prueba meterle esta "chapuzilla" debajo del PA_OutputSimpleText:

PA_ClearTextBg(1);

Lo que hara que el texto se vaya borrando conforme se vaya moviendo...

PD: Podrias meterle que se esperara un segundo o algo asi, de lo contrario va a moverse a una velocidad de vertigo...
Como dice amchacon, la única forma de dar un efecto de movimiento de letras es mostrar las letras, esperar X tiempo, borrar las letras y reimprimirlas en otro lado.

Puedes utilizar el PA_ClearTextBg(1); si quieres borrar todo el texto de la pantalla de arriba o bien imprimir caracteres en blanco, por si hay otro texto que no quieres borrar, es decir, PA_OutputSimpleText(1,x,y," ");

Saludos!

PD: Amchacon, tu vives pegado al PC en busca de posts donde ayudar a la gente con las PAlib, verdad?? xDD
keda escribió:Como dice amchacon, la única forma de dar un efecto de movimiento de letras es mostrar las letras, esperar X tiempo, borrar las letras y reimprimirlas en otro lado.

Puedes utilizar el PA_ClearTextBg(1); si quieres borrar todo el texto de la pantalla de arriba o bien imprimir caracteres en blanco, por si hay otro texto que no quieres borrar, es decir, PA_OutputSimpleText(1,x,y," ");

Saludos!

PD: Amchacon, tu vives pegado al PC en busca de posts donde ayudar a la gente con las PAlib, verdad?? xDD

¿Cual es la funcion en Palib para esperar cierto tiempo? ¿Hay algun sitio donde te pongan cuales son todos los comandos de Palib? Es para ir trasteado :P
PD: Amchacon , pues muy bien que haces en ayudar a los demas.
keda escribió:PD: Amchacon, tu vives pegado al PC en busca de posts donde ayudar a la gente con las PAlib, verdad?? xDD


if ((verano == true)&& (amigos_cabrones_que_se_van_XD == All)){
aburrimiento = true;
PA_OutputSimpleText(1,1,5,"Pos vamos a ayudar a la gente con problemas de palib xDD");
PA_OutputSimpleText(1,1,7,"Pero yo al menos no me conecto a las 4 de la madrugada como el keda ese xDD");
}


m3dssimply escribió:¿Cual es la funcion en Palib para esperar cierto tiempo? ¿Hay algun sitio donde te pongan cuales son todos los comandos de Palib? Es para ir trasteado :P
PD: Amchacon , pues muy bien que haces en ayudar a los demas.

En PAlib\tools\PAlibDocs\eng\tree.html. Tienes la documentacion de palib con todas los comandos de palib...

Pos no se si hay una funcion en palib que haga eso, yo lo que hago es fabricarme una. Me explico, supongo que sabras que el PA_WaitForVBL(); hace que el progama se detenga hasta que la pantalla se refresque... Esto ocurre cada 16,5 milisegundos que son unas 58 veces por segundo. O sea se, si pones 58 PA_WaitForVBL el progama se detendra 1 segundo.

Claro que esto es un poco chapuzero poner tantos, asi que usamos una sentencia for:

for (i = 0; i < 58; i++){
PA_WaitForVBL();
}



Ponemos eso en el while y listo, el progama se detendra un segundo... Si vas a usar esto con mucha frecuencia yo lo meteria en una funcion:

void Esperar(s32 s){

for (i = 0; i < s * 58; i++){
PA_WaitForVBL();
}
}


De esa forma, solo tendras que poner: Esperar(segundos a esperar); si quieres que el progama se detenga x segundos...

Saludos
m3dssimply escribió:PD: Amchacon , pues muy bien que haces en ayudar a los demas.


No me malinterpretes, a mi también me parece estupendo que amchacon ayude a los demás. Sólo lo comenté porque en cualquier tema de ayuda de palib está el primero siempre, y no sólo en esta comunidad, por lo que me resultó curioso xD


amchacon escribió:if ((verano == true)&& (amigos_cabrones_que_se_van_XD == All)){
aburrimiento = true;
PA_OutputSimpleText(1,1,5,"Pos vamos a ayudar a la gente con problemas de palib xDD");
PA_OutputSimpleText(1,1,7,"Pero yo al menos no me conecto a las 4 de la madrugada como el keda ese xDD");
}



if (novia_de_keda || dia_completo){
   desarrollo_Gravity = "Nocturno";
}else{
   desarrollo_Gravity = "Diurno";
}

if (strcmp(desarrollo_Gravity,"Nocturno") == 0){
   PA_OutputSimpleText(1,1,5,"Keda está conectado hasta las 5 de la mañana");
}else{
   PA_OutputSimpleText(1,1,5,"Keda no está conectado hasta las 5 de la mañana");
}

PA_WaitFor(Stylus.Newpress);
PA_ClearTextBg(1);

while(1){ // Esta última parte mola mucho xDD
   PA_SetTextTileCol(0,PA_RandMinMax(0,8));
   PA_SetTextTileCol(1,PA_RandMinMax(0,8));
   PA_Print(0,"xD ");
   PA_Print(1,"xD ");
   PA_WaitForVBL();
}


Nada más que alegar, señoría. [qmparto]
5 respuestas