Page 1 of 2

Erreur programmation Snake

Unread postPosted: 10 Oct 2013, 21:19
by pvdu09
Bonsoir à tous,

J'ai programmé un snake sur ma Ti-83 mais j'ai l'erreur ":Err Argument" et j'ai pas compris ou je me suis trompé donc si vous pouviez m'aider ça serait trop génial ^^
Merci d'avance:)

Voilà le code:
Code: Select all
0->Xmin:94->Xmax
0->Ymin:62->Ymax
AxesOff
ClrDraw
Line(1,0,1,61
Line(1,61,94,61
Line(94,61,94,0
Line(94,0,1,0
47->X:31->Y
0->H:-1->V
randInt(2,93->I
randInt(2,60->J
Pxl-On(J,I
{X->L1:{Y->L2
1->L:1->P
Repeat pxl-Test(Y,X) and not(X=I and Y=J
P+1->P
If P>L:1->P
Pxl-Off(L2(P),L1(P
Pxl-On(Y,X
X->L1(P:Y->L2(P
If X=I and Y=J
Then
L-1->L
Ans->dim(L1
Ans->dim(L2
randInt(2,93->I
randInt(2,60->J
Pxl-On(J,I
End
getKet->K
If K=24:-1->H
If K=26:1->H
If K=24 or K=26:0->V
If K=25:-1->V
If K=34:1->V
If K=25 or K=34:0->H
X+H->X
Y+V->Y
End


P.S. : Si vous avez un peu de temps à perdre ce serait trop sympa de m'expliquer comment on programme des murs sur lesquels on meurt quand on les touche :)

Re: Erreur programmation Snake

Unread postPosted: 10 Oct 2013, 22:03
by critor
Quand la calculatrice te donne l'erreur, appuie sur :ns2: au lieu de :ns1:, et elle te montrera la ligne qui ne lui plaît pas :)

Re: Erreur programmation Snake

Unread postPosted: 10 Oct 2013, 22:26
by Bisam
Euh, dans un Snake, la longueur du serpent est censée augmenter, et non diminuer... :p
Ce devrait être
Code: Select all
L+1->L
à la place de
Code: Select all
L-1->L

Cela provoque l'erreur au moment où le serpent mange sa première pomme car il voit sa longueur passer de 1 à 0... et 0 pour la dimension d'une liste, ça ne passe pas !

D'ailleurs, en général, on fait commencer les Snake avec un serpent de longueur 3 ou 4... mais ce n'est pas bien grave.

Enfin, pour ta question des murs, il suffit d'enregistrer leur position dans des listes et de faire des tests de collision, en regardant si la tête est dans le mur où non, exactement comme lorsque tu testes si le serpent se mord lui-même.

Re: Erreur programmation Snake

Unread postPosted: 11 Oct 2013, 05:43
by Hayleia
Bisam wrote:Enfin, pour ta question des murs, il suffit d'enregistrer leur position dans des listes et de faire des tests de collision, en regardant si la tête est dans le mur où non, exactement comme lorsque tu testes si le serpent se mord lui-même.

Ou encore plus simple : une fois que les murs sont dessinés à l'écran on peut savoir si la tête du serpent touche un mur lorsqu'un pixel est allumé là où la tête du serpent se trouve, donc en utilisant un pxl-Test. Il faut juste penser à tester l'existence du mur avant de dessiner la tête, sinon on perd à tous les coups.

Re: Erreur programmation Snake

Unread postPosted: 11 Oct 2013, 07:12
by Adriweb
Hayleia wrote:
Bisam wrote:Enfin, pour ta question des murs, il suffit d'enregistrer leur position dans des listes et de faire des tests de collision, en regardant si la tête est dans le mur où non, exactement comme lorsque tu testes si le serpent se mord lui-même.

Ou encore plus simple : une fois que les murs sont dessinés à l'écran on peut savoir si la tête du serpent touche un mur lorsqu'un pixel est allumé là où la tête du serpent se trouve, donc en utilisant un pxl-Test. Il faut juste penser à tester l'existence du mur avant de dessiner la tête, sinon on perd à tous les coups.

Aussi, vérifier si c'est bien un mur et pas une pomme. Donc un test des coordonées... serait plus simple ?

Re: Erreur programmation Snake

Unread postPosted: 11 Oct 2013, 18:50
by pvdu09
merci pour l'erreur du L+1 gars :)
l'erreur selon ma calculette l'erreur serait a la ligne Pxl-Off(L²(P)L1(P

si vous aviez la soluce ce serait trop sympa :)

Re: Erreur programmation Snake

Unread postPosted: 11 Oct 2013, 18:56
by critor
pvdu09 wrote:l'erreur selon ma calculette l'erreur serait a la ligne Pxl-Off(L²(P)L1(P


Qui se corrige probablement en Pxl-Off(L2(P),L1(P

Re: Erreur programmation Snake

Unread postPosted: 11 Oct 2013, 19:21
by pvdu09
Et maintenant c'est une erreur DOMAIN à la ligne Repeat pxl-test(Y,X) and not(X=I and Y=J
excusez de vous embetez ^^

Re: Erreur programmation Snake

Unread postPosted: 11 Oct 2013, 19:34
by critor
Pxl-Test renvoie une erreur domaine si le point que tu veux tester est en dehors de l'écran.

Y doit donc être une valeur entière entre 0 et 62, et X entre 0 et 94.
Visiblement, l'un des deux paramètres a dû réussir à sortir de ces marges à cause d'une erreur ailleurs...

Re: Erreur programmation Snake

Unread postPosted: 11 Oct 2013, 20:05
by pvdu09
j'ai pas compris ou le corriger dans le code tu peux préciser un peu steup?:)