J'obtiens une erreur syntaxe qui me renvoie à la ligne de code suivante en exécutant un programme en Ti-Basic sur ma Ti-83+ (ligne 30 dans le programme principal) :
- Code: Select all
"{15+6L₂(1)+int((L₂(1)-1)/3),2-6L₂(2)-int(1/3(L₂(2)-1→ʟCOORR
Cependant, au lieu de me renvoyer à la ligne de code à l'intérieur du programme, la calculatrice affiche l'instruction sur l'écran d’accueil (voir le fichier joint). Encore plus étrange, lorsque j'appuie simplement sur
![[entrer/enter] :f105:](./images/smilies/z80/105.png)
J'ai donc essayé de déterminer l'origine du bug à l'aide de pauses, et je me suis rendu compte que le programme crashait à l'appel d'une seconde liste (que je met dans Ans) (ligne 38 dans le programme principal) :
- Code: Select all
ʟθRECT
Attachée elle aussi à une formule en fonction de la première liste (ligne 32 dans le programme principal) :
- Code: Select all
"{2,⁻1,ʟCOORR(1),ʟCOORR(2),4,4→ʟθRECT
J'ai vérifié, il ne semble pas y avoir d'erreur syntaxe et je ne touche pas aux listes après leurs définitions. Quelqu'un aurait-il une idée sur l'origine du bug?
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Le code complet, si vous voulez essayer de comprendre :
Le programme principal :
Show/Hide spoilerAfficher/Masquer le spoiler
- Code: Select all
//---------------Réglage de l'écran---------------
0:prgmGRAPHWIN
//
//---------------Affichage du quadrillage---------------
For(A,0,18,6
For(B,0,38,19
Line(20+A+B,⁻3,20+A+B,⁻59
Line(20,⁻3-A-B,76,⁻3-A-B
End
End
Line(19,⁻2,19,⁻60
Line(77,⁻60,19,⁻60
Line(19,⁻2,77,⁻2
Line(77,⁻60,77,⁻2
//
//---------------Définition de variables---------------
// B: joueur qui joue
0→B
// L1: extremums des cases parcourables
{1,9,1,9→ʟXTRM
// [A]: matrice représentant le plateau 9*9
{9,9→dim([A]
Fill(0,[A]
// [B]: matrice représentant le plateau 3*3
{3,3→dim([B]
Fill(0,[B]
// ʟCOORM: coordonnées de la case dans la matrice
"{int((ʟXTRM(1)+ʟXTRM(2))/2),int(0.5(ʟXTRM(3)+ʟXTRM(4→ʟCOORM
// ʟCOORR: les coordonnées du coin supérieur gauche de la case en action dans le repère
"{15+6ʟCOORM(1)+int((ʟCOORM(1)-1)/3),2-6ʟCOORM(2)-int(1/3(ʟCOORM(2)-1→ʟCOORR
// ʟθRECT: paramètres pour prgmRECTGNL pour afficher le curseur
"{2,⁻1,ʟCOORR(1),ʟCOORR(2),4,4→ʟθRECT
//
//---------------Lancement du jeu---------------
While 1
// A: getKey
0→A
ʟθRECT
prgmRECTNGL
Repeat A=105
0→A
Repeat A≠0
getKey→A
End
ʟθRECT
prgmRECTNGL
If A=24 and ʟXTRM(1)<ʟCOORM(1
ʟCOORM(1)-1→ʟCOORM(1
If A=25 and ʟXTRM(3)<ʟCOORM(2
ʟCOORM(2)-1→ʟCOORM(2
If A=26 and ʟXTRM(2)>ʟCOORM(1
ʟCOORM(1)+1→ʟCOORM(1
If A=34 and ʟXTRM(4)>ʟCOORM(2
ʟCOORM(2)+1→ʟCOORM(2
ʟθRECT
prgmRECTNGL
End
End
prgmPTCOOR :
Show/Hide spoilerAfficher/Masquer le spoiler
- Code: Select all
Ans→θP2C
If 0=ʟθP2C(1
Then
{15+6ʟθP2C(2)+int((ʟθP2C(2)-1)/3),2-6ʟθP2C(3)-int(1/3(ʟθP2C(3)-1
Return
Else
{(ʟθP2C(2)-20-int((ʟθP2C(2)-20)/19))/6,1/6(ʟθP2C(3)+3+int(1/19(ʟθP2C(3)+3
Return
End
prgmRECTNGL :
Show/Hide spoilerAfficher/Masquer le spoiler
- Code: Select all
Ans→ʟθRECT
//Afficher
If 0=ʟθRECT(1
Then
// le pixel
If 1=ʟθRECT(2
Then
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)+ʟθRECT(5
Pxl-On(θ,Z
End
End
// le point
Else
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)-ʟθRECT(5),⁻1
Pt-On(θ,Z
End
End
End
//Effacer
Else
If 1=ʟθRECT(1
Then
// le pixel
If 1=ʟθRECT(2
Then
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)+ʟθRECT(5
Pxl-Off(θ,Z
End
End
// le point
Else
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)-ʟθRECT(5),⁻1
Pt-Off(θ,Z
End
End
End
//Inverser
Else
// le pixel
If 1=ʟθRECT(2
Then
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)+ʟθRECT(5
Pxl-Change(θ,Z
End
End
// le point
Else
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)-ʟθRECT(5),⁻1
Pt-Change(θ,Z
End
End
End
End
End