1

Voila, j'ai recontré un bug assez important lié notamment aux interruptions.
En fixant des limites à y et x, on se positionne à total=abs(X-x)+abs(Y-y) . disons que la touche LEFT incrémente X et UP incrémente Y.
Après avoir désactivé int1 et int5 :

INT_HANDLER ai1,ai5;
ai1=GetIntVec(AUTO_INT_1);
ai5=GetIntVec(AUTO_INT_5);
SetIntVec(AUTO_INT_1,DUMMY_HANDLER);
SetIntVec(AUTO_INT_5,DUMMY_HANDLER);

On a le prog suivant:

int x=0,y=0,X=9,Y=9,total=3;
do{

if (_keytest(RR_LEFT) && abs(X-x+1)+abs(Y-y)<=totall) X++;
if (_keytest(RR_UP) && abs(X-x)+abs(Y-y+1)<=total) Y++;

}while(1);


Il se trouve que lorsque qu'on appuie simultanément sur UP et LEFT, on obtient à la fin, abs(X-x)+abs(Y-y)=4 !!!
se pourrait -il que la ti ait effectué les 2 opérations parallèlement?
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

2

gnî ? y a rien de simultané à faire, même si tu appuies sur LEFT *puis* UP tu vas avoir (X,Y)=(10,10) confus

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

3

euh oui désolé erreur de code j'ai rectifié
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

4

et range = ? confus

EDIT : bon OK, édit furtif apparemment ^^ t'es sûr que total = 3 ?

(si tu pouvais poster ton code *exact* et complet, ça serait un peu plus utile cheeky)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

5

En fixant des valeurs initiales à y et x, prenant des variables X et Y, et SOMME des distances=abs(X-x)+abs(Y-y) . disons que la touche LEFT incrémente X et UP incrémente Y.
Après avoir désactivé int1 et int5 :

INT_HANDLER ai1,ai5;
ai1=GetIntVec(AUTO_INT_1);
ai5=GetIntVec(AUTO_INT_5);
SetIntVec(AUTO_INT_1,DUMMY_HANDLER);
SetIntVec(AUTO_INT_5,DUMMY_HANDLER);

On a le prog suivant:

int x=0,y=0,X=9,Y=9,total=3;
do{

if (_keytest(RR_LEFT) && abs(X-x+1)+abs(Y-y)<=total) X++;
if (_keytest(RR_UP) && abs(X-x)+abs(Y-y+1)<=total) Y++;

}while(1);


Il se trouve que lorsque qu'on appuie simultanément sur UP et LEFT, on obtient à la fin, abs(X-x)+abs(Y-y)=4 !!!
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

6

Non. Poste le vrai code.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

7

C'est normal, tu incrémentes les 2 en alterné si tu les appuies en même temps. _keytest est un test de touches non-bloquant!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

Mais c'est pas le code qu'il a posté qu'il a essayé. 10+9>3, donc "X++" et "Y++" ne sont jamais exécutés.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

9

Ah oui j'ai encore oublié quelque chose, dsl chui crevé
int x=0,y=0,X=2,Y=2,total=3;

comment ca se fait parce qu'après la première incrémentation, Somme est = 3
donc il ne devrai jamais entrer dans la 2ème incrémentation
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

10

3+2>3, donc "X++" et "Y++" ne sont jamais exécutés roll

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

11

bon dernier essai
int x=0,y=0,X=1,Y=1,total=3;
do{

if (_keytest(RR_LEFT) && abs(X-x+1)+abs(Y-y)<=total) X++;
if (_keytest(RR_UP) && abs(X-x)+abs(Y-y+1)<=total) Y++;

}while(1);

Avant: somme=2
Après: somme=4
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

12

bon ben là pour le coup c pas normal, mais je ne suis pas du tout convaincu que c bien ce code là que tu as compilé, si tu vois ce que je veux dire tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

13

ok ben jvais te montrer l'original void move3(void) {      int tmp,range,x,y,i,j;      range=map[2][mod16(PStat[PStat[1][PTurn]][PposY]+42)][mod16(PStat[PStat[1][PTurn]][PposX]+72)];      range=PUnit[PStat[1][PTurn]][range][PUnitNUM];// get the corresponding number to Udata      range =Udata[range][UnitSpeed];      PStat[PStat[1][PTurn]][PTmp]=PStat[PStat[1][PTurn]][PposX];      PStat[PStat[1][PTurn]][PTmp2]=PStat[PStat[1][PTurn]][PposY];      DRAWMAP(20);      do {           x=mod16(PStat[PStat[1][PTurn]][PposX]+72);           y=mod16(PStat[PStat[1][PTurn]][PposY]+42);           i=mod16(PStat[PStat[1][PTurn]][PTmp]+72);           j=mod16(PStat[PStat[1][PTurn]][PTmp2]+42);                      if (_keytest(RR_LEFT) && 71+PStat[PStat[1][PTurn]][PTmp]>=0 && abs(x-(i-1))+abs(y-j)<=range){                for(tmp=0;tmp!=16;tmp++){                     mouse2();                     ScrollRight160(LIGHT,100);                     ScrollRight160(DARK,100);                          PStat[PStat[1][PTurn]][PTmp]--;                     DRAWMAP(23);                }           }           if (_keytest(RR_RIGHT) && PStat[PStat[1][PTurn]][PTmp]<=XMAX*16-73 && abs(x-(i+1))+abs(y-j)<=range){                for(tmp=0;tmp!=16;tmp++){                     mouse2();                     ScrollLeft160(LIGHT,100);                     ScrollLeft160(DARK,100);                     PStat[PStat[1][PTurn]][PTmp]++;                     DRAWMAP(24);                }           }           if (_keytest(RR_UP) && 41+PStat[PStat[1][PTurn]][PTmp2]>=0 && abs(x-i)+abs(y-(j-1))<=range){                for(tmp=0;tmp!=16;tmp++){                     mouse2();                     ScrollDown160(LIGHT,100);                     ScrollDown160(DARK,100);                     PStat[PStat[1][PTurn]][PTmp2]--;                     DRAWMAP(21);                }           }           if (_keytest(RR_DOWN) && PStat[PStat[1][PTurn]][PTmp2]<=YMAX*16-43 && abs(x-i)+abs(y-(j+1))<=range){                for(tmp=0;tmp!=16;tmp++){                     mouse2();                     ScrollUp160(LIGHT,100);                     ScrollUp160(DARK,100);                     PStat[PStat[1][PTurn]][PTmp2]++;                     DRAWMAP(22);                }           }           if (_keytest(RR_ESC)){                PStat[0][PTmp]=999;                return;           }      } while (!_keytest(RR_ENTER)); }
et donc après la manip, ben on dépasse de 1, range
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

14

déjà un conseil : utilise les structs, ça rendra ton code *bcp* plus lisible cheeky et ça réduira les risques d'erreur ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

15

euh et sinon le pb c que tu ne mets à jour i et j qu'au début de la boucle, donc l'incrémentation de PStat[PStat[1][PTurn]][PTmp] n'a aucun effet sur i...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

16

mais tinkiète, jarrive à me retrouver la dedans lol
(c'est pour ca que je voulais pas copier mon code source au début)
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

17

nan enfin c pas méchant hein, juste que si tu apprends à t'en servir tu te rendras compte que c'est bien plus simple avec des struct smile (et plus flexible, puisque tu peux mettre ensemble plusieurs éléments de types différents, ce que tu ne peux pas faire avec des tableaux)
et pour le fait de ne pas copier le code source, oui c'est une bonne idée en général (c généralement plus agréable qu'un gros source qu'on balance en disant "ça marche pas"), mais là dans ton cas t'as pas fait assez attention et ton testcase n'avait aucun pb ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

18

boa po drole c'est qu'une erreur de prog. et m***e !!!
bon j'avais po vu cette subtilité.
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

19

ok jvais regarder si les struct sont plus intéressantes (parce que ya énormément de données numériques)
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

20

ben oui, et en plus ton namespace global doit être un gros schblurg (comme en Caml cheeky </troll> )

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

21

schblurg??? c quoi ca???
(d'ailleurs c quoi "mon namespace global")
Vive! la Ti-89!
(Mon anneau pylorique est complètement fermé. C'est le résultat de la proximité de cet individu.)

22

ouch indexer un tableau par lui meme sick

que c'est moche
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.