-Coco- le 17/02/2010 à 17:36
Salut les programmateurs!!
Je me posais quelques questions sur les fonctions d'une ligne que je trouvais souvent dans des programmes que je recopiais(je m'en pose toujours d'ailleurs) et j'aimerais bien savoir ce que cela donne.
Un exemple concret d'une ligne tirée d'un programme de Sypotu:
Code
:X-3(T=24 et Pxl-Test(-Y,X+L1(2)-2)=0)+3(T=26 et Pxl-Test(-Y,X+L1(3)+2)=0)->X
Enfin cette ligne là est compliquée mais du genre
:X+3(T=24)-3(T=26)-> X
Si vous en avez une idée, merci de me répondre!!
Didouille le 17/02/2010 à 21:00
Oué j'ai une idée ^^ je crois qu'on appelle sa en langage C des booléens.
"On dit qu'une variable à laquelle on fait prendre les valeurs 0 et 1 est un booléen."
Alors enfaite ta ligne :
Code
:X+3(T=24)-3(T=26)-> X
Si quand le programme rencontre cette ligne :
- T=24, alors dans le code (T=24)=1. Donc 3(T=24)=3*1=3
On a alors (T=26)=0 car justement T=24 et donc, 3(T=26)=3*0=0
- T=26, alors dans le code (T=26)=1. Donc 3(T=26)=3*1=3
On a alors (T=24)=0 car justement T=26 et donc, 3(T=24)=3*0=0
Cette ligne veut enfaite dire que :
- Si T=24, alors 3 est rajouter à X
- Si T=26, alors 3 est enlever à X
Enfaite on peux écrire à la place :
Code
If T=24:X+3->X
If T=26:X-3->X
Prenons un exemple, la partie getKey sur un tutoriel du site du zéro :http://www.siteduzero.com/tutoriel-3-3618-getkey.html
Code
:ClrHome
:1->X:1->Y
:Repeat K=105
:Output(Y,X,"+"
:getKey->K
:If K=24:X-1->X
:If K=26:X+1->X
:If K=25:Y-1->Y
:If K=34:Y+1->Y
:If X=0:1->X // le bord gauche
:If X=17:16->X // le bord droit
:If Y=0:1->Y // le bord du haut
:If Y=9:8->Y // le bord du bas
:End
Ce code Déplace un + sur l'écran suivant la touche que l'on presse et gère les colision (si le + arrive à une extrémité, il ne faut pas que le programme ne renvoie d'erreur)
Maintenant, on va l'optimiser.(Le raccourcir et donc le rendre plus rapide)
On peut remplacer sa :
Code
:If K=24:X-1->X
:If K=26:X+1->X
:If K=25:Y-1->Y
:If K=34:Y+1->Y
Par :
Code
:X-(K=24->X
:X+(K=26->X
:Y-(K=25->Y
:Y+(K=34->Y
Ou même mieux par :
Code
:X-(K=24)+(K=26)->X
:Y-(K=25)+(K=34)->Y
Maintenant, on optimise sa :(le gars du tutoriel ne l'a pas fait)
Code
:If X=0:1->X
:If X=17:16->X
:If Y=0:1->Y
:If Y=9:8->Y
On peut mettre à la place :
Code
X+(X=0)-(X=17)->X
Y+(Y=0)-(Y=9)->Y
Cette fois, on veut que le plus aille de l'autre côté de l'écran, s'il tombe à une extrémité :
Code
X+16(X=0)-16(X=17)->X
Y+8(Y=0)-8(Y=9)->Y
Et voilà, on a optimiser le code, on a maintenant :
Code
:ClrHome
:1->X:1->Y
:1->A:1->B
:Repeat K=105
:Output(A,B," "
:Output(Y,X,"+"
:Y->A:X->B
:getKey->K
:X-(K=24)+(K=26)->X
:Y-(K=25)+(K=34)->Y
:X+16(X=0)-16(X=17)->X
:Y+8(Y=0)-8(Y=9)->Y
:End