Posté le 04/07/2014 17:33
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2025 | Il y a 209 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 04/07/2014 17:34 | #
Il est inutile de faire de la copie.
D'abord, est-ce que l'espace à gauche du rectangle est utilisé ? Ce facteur pourrait simplifier l'algorithme -- et rendre le défilement plus agréable.
Citer : Posté le 04/07/2014 17:41 | #
En gros je voudrais ça :
Citer : Posté le 04/07/2014 17:49 | #
Ok, j'avais pas compris ça.
Alors tu auras besoin de copie, mais c'est assez facile.
Voilà un code d'exemple, les seules valeurs que tu dois adapter sont celles que j'ai utilisées en define.
#define X 0
#define Y 0
const char *MaChaine[]={ "Le truc que je veux afficher" };
char buffer[LENGTH+1];
int i;
for(i=0;i<strlen(*MaChaine)-LENGTH;i++)
{
strncpy(buffer,*MaChaine+i,LENGTH);
buffer[LENGTH] = 0;
Txt_Text(buffer,X,Y,TXT_MINISD,TXT_OR);
GetKey(&key);
}
Citer : Posté le 04/07/2014 18:10 | #
Ok, merci Lephénixnoir, mais serait-ce possible de le mettre dans une boucle while ?
Citer : Posté le 04/07/2014 18:14 | #
Ben, tu sais une boucle for c'est juste une boucle while réduite.
#define X 0
#define Y 0
const char *MaChaine[]={ "Le truc que je veux afficher" };
char buffer[LENGTH+1];
int i = 0:
while(i<strlen(*MaChaine)-LENGTH)
{
strncpy(buffer,*MaChaine+i,LENGTH);
buffer[LENGTH] = 0;
Txt_Text(buffer,X,Y,TXT_MINISD,TXT_OR);
GetKey(&key);
i++;
}
Citer : Posté le 04/07/2014 18:18 | #
...Désolé mais je me suis mal fait comprendre
Je veut dire que le texte défile et que lorsque le défilement arrive au bout de la chaine, on recommence comme ça :
"abcde"
Citer : Posté le 04/07/2014 18:27 | #
Ah, ok. Je te mets donc des Sleep().
#define X 0
#define Y 0
const char *MaChaine[]={ "Le truc que je veux afficher" };
char buffer[LENGTH+1];
int i;
while(IsKeyUp(30002))
{
for(i=0;i<strlen(*MaChaine)-LENGTH;i++)
{
strncpy(buffer,*MaChaine+i,LENGTH);
buffer[LENGTH] = 0;
Txt_Text(buffer,X,Y,TXT_MINISD,TXT_OR);
Bdisp_PutDisp_DD();
Sleep(100);
}
Sleep(900); // + 100
}
Citer : Posté le 04/07/2014 18:41 | #
Defilement=0;
while(!key_down(31)){ //Attend l'appuis de "EXE"
ML_rectangle(64,43,126,61,0,0,0); //Effaçage de la 3ème zone d'écriture
if(AffTxt>=0 && AffTxt<1000)ML_bmp_or(ImTexteSucces[Z/3],65,44,61,7); //Dessin du succè obtenu
if(AffTxt>=1000)ML_bmp_or(ImExe,87,44,17,7); //Dessin de "EXE"
strncpy(buffer,TextesSucces[Z]+Defilement,15);
buffer[16]=0;
Txt_Text(buffer,66,54,TXT_MINISD,TXT_OR);
AffTxt++;
if(AffTxt==1500)AffTxt=0;
if(!(AffTxt%100))Defilement++;
if(Defilement>strlen(TextesSucces[Z])-15)Defilement=0;
ML_display_vram(); //Affichage du message de succè
}
Citer : Posté le 04/07/2014 18:45 | #
Est-ce que sans te casser la tête, tu pourrais me montrer ce que ça donne du coup ?
Citer : Posté le 04/07/2014 19:00 | #
Voici un
Citer : Posté le 04/07/2014 19:03 | #
Merci. Au début, je pensais que tu voulais faire un scrolling au pixel (ce qui est également faisable, quoique plus difficilement).
Ça rend plutôt bien, c'est cool.
Citer : Posté le 04/07/2014 19:06 | #
Ben merci Lephénixnoir, au pixel serrait pas mal, mais c'est pas moi qui chercherais comment faire (quoique je viens d'avoir une idée
PS : c'est la Dernière étape avant le test final de débogage
Citer : Posté le 04/07/2014 19:08 | #
En fait, il y a un problème avec le scrolling au pixel.
Le problème, c'est que la libText va toujours afficher le premier caractère en entier. Comme il devra disparaître progressivement, il faudra que tu effaces le début gênant ; mais pour cela, il te faut au moins 3-1 = 2 pixels "constants" à gauche du dernier pixel dans lequel le texte du scroll appraîtra.
Est-ce le cas ?
Citer : Posté le 04/07/2014 19:12 | #
Hum, je pensais à la même chose
Mais après pour pas s'embêter il en faudrais 4 à droite (si tu comprend ce que je veux dire) et il se trouve que la droite importe peux donc ça passerait
Mais là j'ai la flemme, mais si tu veux me le faire, pas de soucis
Citer : Posté le 04/07/2014 19:16 | #
Ben, il suffit de remplacer la commande Txt_Text() par une boucle à 4 itérations.
Là comme ça, je ne sais pas si ça va fonctionner -- de tout façon ça n'effacera rien -- mais tu peux toujours essayer.
AffTxt=0;
Defilement=0;
while(!key_down(31)){ //Attend l'appuis de "EXE"
ML_rectangle(64,43,126,61,0,0,0); //Effaçage de la 3ème zone d'écriture
if(AffTxt>=0 && AffTxt<1000)ML_bmp_or(ImTexteSucces[Z/3],65,44,61,7); //Dessin du succè obtenu
if(AffTxt>=1000)ML_bmp_or(ImExe,87,44,17,7); //Dessin de "EXE"
strncpy(buffer,TextesSucces[Z]+Defilement,15);
buffer[16]=0;
for(j=0;j<4;j++) Txt_Text(buffer,66-j,54,TXT_MINISD,TXT_OR);
AffTxt++;
if(AffTxt==1500)AffTxt=0;
if(!(AffTxt%100))Defilement++;
if(Defilement>strlen(TextesSucces[Z])-15)Defilement=0;
ML_display_vram(); //Affichage du message de succè
}
Citer : Posté le 04/07/2014 19:17 | #
Ouai, ton truc pourrais fonctionner mais ce serait trop rapide
Citer : Posté le 04/07/2014 19:23 | #
Pas moyen de mettre un Sleep() je suppose ?
Bon... je vais y réfléchir, mais je pense que je sais comment faire.