Page 1 sur 1

ERR:Syntaxe sur un jeu en Ti-Basic

Message non luPosté: 04 Déc 2015, 13:27
de Eliastik
Bonjour,

J'ai repris un Snake disponible sur Ti Planet (celui-ci : https://tiplanet.org/forum/archives_voir.php?id=3808) afin d'y jouer sur ma calculatrice Ti-82 Advanced. Ayant battu le meilleur score possible (100), je me suis attelé à amélioré le code existant en poussant le score maximal à 999. Le problème, c'est que j'ai de plus en plus d'erreurs de syntaxe sur de simples If... J'ai déjà testé sur d'autres calculatrices de même modèle, le problème se produit toujours aléatoirement :'( . J'ai bien vérifié les End, en essayant de corriger le code, rien ne fonctionne. Je précise que je code à l'aide de l'éditeur de programmes du logiciel Ti Connect CE.

Voici les bouts de code qui pose problème, avec en gras les lignes posant problème et en jaune les endroits où le curseur se met lors d'une erreur :

Lbl 5
[...]
If P=100 ou P=200 ou P=300 ou P=400 ou P=500 ou P=600 ou P=700 ou P=800 ou P=900
Then
Texte(21,37,"BRAVO !
Texte(28,5,"La partie va recommencer
Texte(35,22,"avec votre score !
Pause
N+0.01→U
1→L
Goto 51
Else:If P=999
Then
N+1.7349→L₆(1
Texte(21,37,"BRAVO !
Texte(28,8,"Vous êtes un champion de
Texte(35,37,"Snake !
Pause
Goto 50


Lbl 3
[...]
getKey→K
If K=45
Then
EffÉcran
Menu("Quitter Snake ?","Non",R,"Oui",89
Lbl R
EffÉcran
End
If K=105
Pause
If K=0
Goto 2
If D=72
Then
If K=24
67→D
If K=26
77→D
If 1=abs(K-25 'j'ai aussi des Err:Argument sur cette ligne parfois
44→C
Goto 2
End
If C44
Goto 2
If K=25
39→C
If K=34
49→C
If K=25 ou K=34
72→D
Goto 2
End


La partie du code à l'endroit auquel le jeu commence (le code n'est pas complet) :

Code: Tout sélectionner
Lbl 51
EffDess:EffÉcran:0→Xmin:94→Xmax:­62→Ymin:0→Ymax:AxesNAff:FoncNAff :6→A:8→B:44→C:77→D:1→E:0→O:1→dim(L₆:U→N
If .7349=partDéc(L₆(1
L₆(1→O
EffListe L₄
EffListe L₅
99→dim(L₄:99→dim(L₅
For(θ,1,6,1.4
Ligne(88,­ent(θ),6,­ent(θ)
End
Ligne(6,­57,88,­57
Ligne(88,­56,88,­6
Ligne(6,­6,6,­56
Texte(0,13," SCORE : ",ent(N+1
Texte(0,53," HIGH : ",ent(O
Lbl 5
If N+1>O
N+1.7349→L₆(1
Texte(0,53," HIGH : ",ent(L₆(1
­8-5ent(NbrAléat10→I
8+5ent(NbrAléat16→J
N+1→P
If P=100 ou P=200 ou P=300 ou P=400 ou P=500 ou P=600 ou P=700 ou P=800 ou P=900
Then
Texte(21,37,"BRAVO !
Texte(28,5,"La partie va recommencer
Texte(35,22,"avec votre score !
Pause
N+0.01→U
1→L
Goto 51
Else:If P=999
Then
N+1.7349→L₆(1
Texte(21,37,"BRAVO !
Texte(28,8,"Vous êtes un champion de
Texte(35,37,"Snake !
Pause
Goto 50
End
If pxl-Test(­I,J
Goto 5
Ligne(J,I,J+2,I-2
Ligne(J,I-2,J+2,I
Goto 3
End
Lbl 2
6+50partDéc((A+C)/50→A
8+80partDéc((B+D)/80→B
If pxl-Test(A+2,B:Goto 4
Texte(A,B,"°
Lbl 3
arrondir(1+LpartDéc(E/L),0→E
Texte(L₄(E),L₅(E),"   
A→L₄(E:B→L₅(E
0→K
getKey→K
If K=45
Then
EffÉcran
Menu("Quitter Snake ?","Non",R,"Oui",89
Lbl R
EffÉcran
End
If K=105
Pause
If K=0
Goto 2
If D=72
Then
If K=24
67→D
If K=26
77→D
If 1=abs(K-25
44→C
Goto 2
End
If C≠44
Goto 2
If K=25
39→C
If K=34
49→C
If K=25 ou K=34
72→D
Goto 2
End
Lbl 89
If N+1>O
N+1.7349→L₆(1
EffÉcran
Goto 50
Lbl 4
Texte(A,B,"°
Ligne(B+1,­A-3,B+2,­A-2
If ­I≠A+2 ou J≠B ou N≥999
Goto Q
N+1→N
L+1→L
Texte(0,38,ent(N+1
Goto 5
End
Lbl Q
If N+1>O
N+1.7349→L₆(1
1→L
Menu("GAME OVER !","Continuer",51,"Quitter",50
End


Merci d'avance pour votre aide !

Re: ERR:Syntaxe sur un jeu en Ti-Basic

Message non luPosté: 04 Déc 2015, 14:33
de critor
Bonjour,

Tu veux dire que quand tu lances ce même programme, le problème ne se produit pas toujours ?
Es-tu sûr que c'est bien une erreur de syntaxe que donne la calculatrice ?
Une erreur de syntaxe n'est pas aléatoire. Ou le code est écrit correctement, ou il ne l'est pas.

Re: ERR:Syntaxe sur un jeu en Ti-Basic

Message non luPosté: 04 Déc 2015, 18:52
de Eliastik
Bonsoir,

Le problème se situe en plein jeu. Par exemple, on peut y jouer normalement mais au beau milieu d'une partie, le jeu plante avec une frustrante erreur de syntaxe. Ces erreurs ne se produisent pas toujours au même moment, mais elles se produisent pratiquement à toutes les parties. C'est ça qui est étrange, d'autant plus que le debugger de la calculette donne le plus souvent une erreur se situant sur la ligne d'un simple If et place le curseur sur le caractère "=" des conditions. J'ai surtout ce type d'erreur sur les blocs de conditions du Lbl 3 mais également sur le Lbl 5 (dont une partie de code a été ajoutée par mes soins). Je n'ai pas vu d'erreur en dehors de ces deux labels. Ce type d'erreur avait lieu aussi avant que je me mette à améliorer le jeu, mais depuis que le code a grossit, il y en a de plus en plus.

Re: ERR:Syntaxe sur un jeu en Ti-Basic

Message non luPosté: 04 Déc 2015, 18:55
de GalacticPirate
bonjour,
Tu peux télécharger un Snake similaire mais quasiment identique, dont celui que tu as téléchargé est une copie :p
Voici ce lien :[archive=]gg[/archive]

Re: ERR:Syntaxe sur un jeu en Ti-Basic

Message non luPosté: 04 Déc 2015, 18:56
de critor
Cela vient peut-être du fait que tu utilises des Goto à l'intérieur de blocs d'instructions (If/Then/Else/End, While/End, For/End...), c'est-à-dire dans le cas où le Goto se déclenche sans passer par les instructions End permettant de fermer le If/While/For.

Re: ERR:Syntaxe sur un jeu en Ti-Basic

Message non luPosté: 04 Déc 2015, 19:18
de Eliastik
@STV : tu t'es trompé sur le lien ;)

@critor Merci de ta réponse. Dans le cas d'un If sur une ligne sans avoir besoin de Then/End, je peux utiliser librement les Goto ? En attendant, j'ai fais ça (le code est complet pour la partie jeu) :

Code: Tout sélectionner
Lbl 51
EffDess:EffÉcran:0→Xmin:94→Xmax:­62→Ymin:0→Ymax:AxesNAff:FoncNAff :6→A:8→B:44→C:77→D:1→E:0→O:1→dim(L₆:U→N
If .7349=partDéc(L₆(1
L₆(1→O
EffListe L₄
EffListe L₅
99→dim(L₄:99→dim(L₅
For(θ,1,6,1.4
Ligne(88,­ent(θ),6,­ent(θ)
End
Ligne(6,­57,88,­57
Ligne(88,­56,88,­6
Ligne(6,­6,6,­56
Texte(0,13," SCORE : ",ent(N+1
Texte(0,53," HIGH : ",ent(O
Lbl 5
If N+1>O
N+1.7349→L₆(1
Texte(0,53," HIGH : ",ent(L₆(1
­8-5ent(NbrAléat10→I
8+5ent(NbrAléat16→J
N+1→P
If P=100 ou P=200 ou P=300 ou P=400 ou P=500 ou P=600 ou P=700 ou P=800 ou P=900
Goto 68
If P=999
Goto 69
If pxl-Test(­I,J
Goto 5
Ligne(J,I,J+2,I-2
Ligne(J,I-2,J+2,I
Goto 3
Lbl 2
6+50partDéc((A+C)/50→A
8+80partDéc((B+D)/80→B
If pxl-Test(A+2,B:Goto 4
Texte(A,B,"°
Lbl 3
arrondir(1+LpartDéc(E/L),0→E
Texte(L₄(E),L₅(E),"   
A→L₄(E:B→L₅(E
0→K
getKey→K
If K=45
Menu("Quitter Snake ?","Non",2,"Oui",89
If K=105
Pause
If K=0
Goto 2
If D=72
Then
If K=24
67→D
If K=26
77→D
If 1=abs(K-25
44→C
End
If C≠44
Goto 2
If K=25
39→C
If K=34
49→C
If K=25 ou K=34
72→D
Goto 2
Lbl 89
If N+1>O
N+1.7349→L₆(1
EffÉcran
Goto 50
Lbl 4
Texte(A,B,"°
Ligne(B+1,­A-3,B+2,­A-2
If ­I≠A+2 ou J≠B ou N≥999
Goto Q
N+1→N
L+1→L
Texte(0,38,ent(N+1
Goto 5
Lbl Q
If N+1>O
N+1.7349→L₆(1
1→L
Menu("GAME OVER !","Continuer",51,"Quitter",50
Lbl 68
Texte(21,37,"BRAVO !
Texte(28,5,"La partie va recommencer
Texte(35,22,"avec votre score !
Pause
N+0.01→U
1→L
Goto 51
Lbl 69
N+1.7349→L₆(1
Texte(21,37,"BRAVO !
Texte(28,8,"Vous êtes un champion de
Texte(35,37,"Snake !
Pause
Goto 50

Re: ERR:Syntaxe sur un jeu en Ti-Basic

Message non luPosté: 04 Déc 2015, 20:49
de critor
Oui, If/Goto ne devrait plus poser de problème. :)

Re: ERR:Syntaxe sur un jeu en Ti-Basic

Message non luPosté: 05 Déc 2015, 10:40
de Eliastik
OK, je viens de tester le jeu et plus aucun problème d'erreur de syntaxe. Merci pour vos réponses :)

Re: ERR:Syntaxe sur un jeu en Ti-Basic

Message non luPosté: 05 Déc 2015, 12:23
de critor
Super :)