Traduction |
Auteur |
Message |
-Coco-
Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
|
Posté le : Mer 17 Fév 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
Autorisation : Membre
Nb de messages : 158
Inscrit le : Dim 11 Oct 2009, 14:18
|
Posté le : Mer 17 Fév 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
|
---------------------- --Didouille-- |
|
|
|
-Coco-
Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
|
Posté le : Mer 17 Fév 2010, 21:19
|
|
|
Aaah ok!
Ouais j'ai des notions de langage C (même C++ ^^ ) je vois tout a fait!
ok!
Je l'avais pas du tout vu comme ça a la base ^^
Merci!
Dis donc toi aussi tu vas sur le Site du Zero? j'adore ce site ^^ tu trouves de tout et n'importe quoi la dedans ^^
|
|
|
|
Didouille
Autorisation : Membre
Nb de messages : 158
Inscrit le : Dim 11 Oct 2009, 14:18
|
Posté le : Mer 17 Fév 2010, 22:27
|
|
|
C'est un plaisir de t'avoir aider =)
Et oui j'adore le site du zéro ! J'ai lu et suivi le cours de Matheo sur le C mais j'ai abandonner aux pointeurs ^^. Sinon j'ai un peu suivi le cour de Modélisation 3D, quelques articles, les trucs de Ti et des fois des news.
---------------------- --Didouille-- |
|
|
|
-Coco-
Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
|
Posté le : Mer 17 Fév 2010, 22:54
|
|
|
^^ moi j'ai tenu le coup en langage C j'ai même créé un jeu débile ou faut éviter des obstacles qui tombent ^^ malgré quelques petits bugs ça marche ^^
apres j'ai abandonné car pour l'instant ça me sert pas
|
|
|
|