Page 1 of 1

Bug de Ligne( ?

Unread postPosted: 12 Dec 2019, 23:27
by unpseudodifferent
Bonsoir à vous ! Je me suis inscris sur ce site car je fais face à un problème depuis deux heures au moins et trouver la solution semble au-delà de mes capacités...
En bref je veux juste créer un jeu sur ma calculatrice, je l'ai déjà fait auparavant en utilisant un code similaire et ça a très bien marché ce qui fait que je ne comprends vraiment pas ce qu'il se passe.
Code: Select all
EffDess:AxesNAff
0→X:1→Y:0→A
40/47→V:0→W:V→U:19.6774194→T
Lbl 1
If A=1:Then:2→A:1→X:0→V:0.303030303→W:13.6170212→U:End
If A=0:1→A
Repeat X=17 ou Y=17
Ligne(­180/47+XV,9.6774194-YW,­180/47+XU,9.6774194-YT)
If A=1:X+1→X
If A=2:Y+1→Y
End
If A=1:Goto 1

Ceci est le début de mon code (toujours en cours d'écriture donc) qui au final servira à dessiner une grille. Quand A=1 seule la valeur X est supposée augmenter dans la boucle, cependant il se passe autre chose :
- la première fois que la boucle est effectuée tout est normal, il s'affiche donc une ligne verticale qui va du haut jusqu'au bas de l'écran.
- à partir de la seconde fois la calculatrice n'affiche plus que des points aux différentes abscisses définies par X sur la même ordonnée. (voir image) Cela signifie que (et j'ai vérifié) Y passe à 0 alors qu'il est censé être 1 pendant les 17 premières répétitions. Or je n'ai marqué nul part que je voulais que Y diminue jusque là.
- voila la partie la plus étrange : si je retire la ligne contenant Ligne( et toutes les coordonnées qui vont avec (sachant que les modifier ne change rien à mon problème), l'anomalie ne survient pas !
Le problème viendrait donc de cette ligne ? Comment est-ce possible ?

J'espère que vous saurez m'aider, je vous souhaite une bonne soirée !

Re: Bug de Ligne( ?

Unread postPosted: 12 Dec 2019, 23:30
by critor
Bonsoir.

De mémoire, il me semble que les instructions de dessin écrasent les valeurs de variables X et Y.
Il vaut mieux donc éviter d'utiliser ces noms de variables dans ces cas-là.

Re: Bug de Ligne( ?

Unread postPosted: 12 Dec 2019, 23:35
by unpseudodifferent
Merci de la réponse. Cela pourrait être la cas mais X augmente normalement dans la boucle.
Voici le code l'autre jeu dont je parlais si ça peut aider. La grille est différente mais le fonctionnement est le même, et le code fonctionne normalement :
Code: Select all
EffDess:AxesNAff:0→X:0→Y:1→Z:0→B:0→C:0→H:DelVar [J]
While Y<5
Ligne(­4.2553192+X2.5531915,9.3548387-Y3.5483871,­2.5531915+X2.5531915,9.3548387-Y3.5483871)
Ligne(­4.2553192+X2.5531915,6.7741936-Y3.5483871,­2.5531915+X2.5531915,6.7741936-Y3.5483871)
Ligne(­4.2553192+X2.5531915,9.3548387-Y3.5483871,­4.2553192+X2.5531915,6.7741936-Y3.5483871)
Ligne(­2.5531915+X2.5531915,9.3548387-Y3.5483871,­2.5531915+X2.5531915,6.7741936-Y3.5483871)
1+X→X
If X=5:Then:0→X:1+Y→Y:End
End


Peut-être cela n'affecte-t-il que Y ?

Re: Bug de Ligne( ?

Unread postPosted: 12 Dec 2019, 23:43
by critor
Oui, vu le dessin c'est clairement le Y qui est écrasé à la 1ère itération.

Re: Bug de Ligne( ?

Unread postPosted: 12 Dec 2019, 23:47
by unpseudodifferent
Je comprends, mais comment expliquer que cela ne se produise pas dans le second code que j'ai envoyé ??