Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 7158
Réponses : 122
Type : discussion
Etat : réponses autorisées

Tetris - Page 1 / 3

Rézus le 24/10/2009 à 20:09
J'ai vu que plusieurs personnes recherchent un Tetris,et c'est vrai que ça manque au forum,mais j'ai la flemme de le faire tout seul,surtout que c'est pas ce qu'il y a de plus simple,donc tout ceux que ça interresse,faites-le avec moi.
J'ai déjà commencé un bout de code expérimental:
Code
EffVar [A]
{9,12}ü ( ) dim([A]
For(X,1,12
1ü ( ) [A](9,X
End
EffEcr
Pause
For(Y,1,8
Output(Y,4,"!
End
9ü ( ) X
Lbl 1
For(Y,1,8
0ü ( ) K
codeTouch(ü ( ) K
Xü ( ) A
X-(K=24)+(K=26)ü ( ) X
X-(Xù ( ) 17)+(X÷ ( ) 4)ü ( ) X
If Yø1
Output(Y-1,A,"
Output(Y,X,"0
If [A](Y+1,X-4)=1
Goto 2
End
Goto 1
Lbl 2
0ü ( ) C
1ü ( ) [A](Y,X-4
For(A,1,12
C+[A](Y,A)ü ( ) C
End
If C=12
Then
For(A,1,12
0ü ( ) [A](Y,A
Output(Y,5,"           
End
End
Goto 1


Il faut encore que les "0" descendent quand une ligne est complétée.
Après on verra pour transformer ces 0 en blocs,mais là ce serait plus facile dans le graffe,cependant j'ai peur que le programme final soit lourd et lent.

edit:Si ça n'intéresse personne je laisse tomber.
denis le 01/11/2009 à 17:37
Moi je veux bien essayer !!
denis le 01/11/2009 à 17:51
Alors, ce début de programme :

Il fait descendre des "0" qui s'enpile les uns sur les autres
Et on peut les déplacer a droite ou a gauche avec les fléches de la calto.
J'ai quelque qustions :
Tu utilise une matrice mais comment fait tu pour que les blocs s'enpile? Des que un bloc arrive en bas sa position dans la matrice prend une valeur différente des position où il n'y a pas encore de blocs?
Rézus le 02/11/2009 à 12:02
Voilà c'est ça.
Mais faudrait voir à utiliser le graph et a enlever la matrice pour que ce soit et plus rapide.
sypotu le 02/11/2009 à 12:23
tu veux faire avec des pxl test ?
je pense qu'il y a un meilleur rapport rapidité/simplicité avec une matrice non ?
Rézus le 02/11/2009 à 12:44
C'est sûr que c'est plus simple d'utiliser la matrice,mais ça dépend aussi du nombre de "carrés" qu'il y aura,parce que ça risque de prendre beaucoup de place avec la matrice.
denis le 02/11/2009 à 13:17
D'un coté pxl-test ça serait plus ligth que une matrice, mais comment savoir si une ligne est complété sans matrice?? ahh.gif
sypotu le 02/11/2009 à 13:27
et puis pour faire desendre les lignes quand on détruit la dernière...
ce ne sera pas évidant non plus sans matrice cry.gif
Sangohan38 le 02/11/2009 à 13:30
Un Tetris ça représente une matrice 10*16 donc 1451 octets d'après ma calculatrice et c'est énorme.
De plus, cela risque de ralentir le jeu de l'utiliser au lieu d'utiliser des pxl-test.
Pour vérifier les lignes, c'est pas compliquer à chaque fois qu'un objet est stoppé par le bas où un autre, on fait les pxl-test des deux lignes qui le compose (soit 20 pxl-test).
Donc ce sera plus léger (où light pour les anglophones).

Sangohan38
Rézus le 02/11/2009 à 18:04
Donc si j'ai bien compris,les carrés feraient chacun 5 pixels de côté ?

PS:Le problème c'est que certains objets sont composés de plus de 2 lignes,et d'autres de plus de 2 carrés de large,de plus, avec 20 pxl-tests le jeu est pas près d'aller vite.En plus q'y faut encore un codetouch pour déplacer l'objet et le faire changer de sens.

Faut donc trouver un système qui permet de savoir quelles sont les faces de chaque objets qui soient capables de l'arrêter puis faire un pxl-test pour ces deux (ou 3 ou 4) faces,le jeu devrait être plus rapide.
Sangohan38 le 02/11/2009 à 18:35
Après tests, il s'est avéré que chaque carré fait 3 pixel de côté.
Sinon 20 pxl-test, c'est assez rapide à faire: une boucle de 1 à 10 dans une boucle allant de 1 à 2 et le tours est joué.
Bon comme tu dit il faut dans certains cas vérifier 3 lignes et bien il suffit de mettre un 3 dans la boucle au lieu d'un deux.
Pour ton système de face, j'avoue ne pas avoir bien compris: tu veux que l'on vérifie la forme de l'objet avant de tester? Si c'est ça, il suffit de mettre 1,2,3 ou 4 dans une variable et au moment du test on vérifie pour ensuite regarder si on fait une boucle de 1 à 2 où de 1 à 3 mais je ne suis pas sur que ce soit plus rapide.

Sangohan38
Rézus le 03/11/2009 à 14:51
Ouais c'est bien ce que je voulais dire.
Faudra essayer des deux manières,mais le dernier programme que j'ai fait et qui utilise les pixel-Test c'étais pas une flèche.
denis le 03/11/2009 à 15:57
Et si au lieu d'utiliser 20 pxl-test on utisilser une liste ?
On utilise les pxl-test juste pour "arreter" les blocs qui descendent.
Et la liste représente les 2 dernieres lignes qui sont en cours de "replissage".

Ne serait-ce point plus rapide? ahh.gif

Autre chose, afficher des blocs de 3x3 ça prend du temps à la calculette.
pourquioi pas faire des blocs 2x2? Dans ce cas là, il suffirait de reduire la taille de chaques blocs et le tour et joué nn?
Seul bémol, avoir une bonne vue parce que ça devient petit sur la calculatrice...

Enfin, je me demandait, le plus efficace pour afficher un blocs 3x3 c'est

ça :

Code
pxl-on(y,x)
pxl-on(y+1,x)
pxl-on(y+2,x)
pxl-on(y+3,x)
pxl-on(y+1,x+1)
pxl-on(y+2,x+1)
pxl-on(y+3,x+1)
etc...


ou une boucle :

Code
For(A,0,2)
For(B,0,2)
Pxl-test(y+B,x+A)
End
End
sypotu le 03/11/2009 à 19:37
il ya beaucoup plus simple !!! bigmouth.gif

Code
pts-on(X,Y,2
denis le 03/11/2009 à 19:48
ça marche aves pxl-on(y,x,2 ????? ahh.gif ahh.gif ahh.gif
sypotu le 03/11/2009 à 20:03
non il faut mettre point et non pixel
denis le 03/11/2009 à 20:40
Dommage, Dommage...
sypotu le 03/11/2009 à 22:18
pourquoi dommage ?
ça change presque rien. . .
denis le 04/11/2009 à 10:12
Beh si ça change tout parce que "pt-test" ça existe pas !

Et je "pt-on" et "pxl-test" soit faisable. le premier tient compte des axes du graph et l'autre nn...
sypotu le 04/11/2009 à 10:34
si tu met cette fenêtre c'est réglé :
Xmin: 0
Xmax: 94
Ymin: -62
Ymax: 0
sypotu le 04/11/2009 à 11:28
Voilà ma version bigmouth.gif :

Je la trouve assez rapide mais les blocs sont tous des carrés. happy.gif
Dès que j'essaie de faire un tirage aléatoire entre deux formes le jeu ralentit énormément cry.gif, je ne sais pas comment faire...
Code
EffDessin
0->Xmin
94->Xmax
0->Ymax
(-)62->Ymin
(-)1->;P
For(Z,0,1
Ligne(0+Z,0,0+Z,(-)62
Ligne(47+Z,0,47+Z,(-)62
Ligne(2,(-)1+Z,46,(-)1+Z
End
Ligne(2,(-)62,46,(-)62
Texte(3,60, «TETRIS !
Texte(30,58, « POINTS :
Lbl 1
P+1->P
Texte(30,85,P
21->X :(-)3->Y
Lbl 2
codeTouche->T
X->N :Y->O
If T=24 et pxl-Test((-)Y,X-2)=0
X-3->X
If T=26 et pxl-Test((-)Y,X+2)=0
X+3->X
If T=34 et pxl-Test((-)Y+5,X)=0
Y-6->Y
If pxl-Test((-)Y+2,X)=0
Y-3->Y
Pt-Off(N,O,2
Pt-On(X,Y,2
If pxl-Test((-)Y+2,X)=1:Then
0->[theta]
If Y=(-)6:Stop
For(Z,2,44,3
If pxl-Test((-)Y,Z)=0
1->[theta]:End
If [theta]=0:Goto 3
Goto 1:End
If T=105
Pause
If T=45:Stop
Goto 2
Lbl 3
(-)Y->A
Repeat  A=6
For(Z,2,44,3
If pxl-Test(A-2,Z)=1:Then
Pt-On(Z+1,(-)A,2
Else
Pt-Off(Z+1,(-)A,2
End
End:A-3->A:End
Goto 1
Rézus le 05/11/2009 à 19:02
Eh,je viens de recopier,ça marche !
Pour moi ça peux nous sevir de base,si tu peux,faudrait que tu dises le rôle de chaque variable,on gagnerais du temps.
Juste un truc,pour le Text qui affiche les points faut remplacer le 85 par un 88.
Floyd The Wolf le 05/11/2009 à 20:47
Sinon si ça vous intéresse, j'avais déjà vu quelque part (je ne sais plus où) un tétris dont les blocs sont simplement composés de la lettre 'L'.
Il faut avoir un brin d'imagination (faut penser à des tablettes de chocolat exposées à la lumière et dont seulement 2 côtés sont dans l'ombre)...
Ce qui donnerait quelque chose du genre

Code

    L      L
   LLL     L
           L

LLL   LLLLL  LLL
LLLLLLLLLLL  LLL


ça ne rend pas très bien avec le code, mais sur la calto, c'est flagrant.
Sangohan38 le 06/11/2009 à 07:17
Je l'avais télécharger ce tétris et il fonctionnait très mal: trop lent et avec des erreurs de copies (c'était un fichier 82p testé directement sous VTI).

Sangohan38
sypotu le 06/11/2009 à 18:25
puis je ne vois pas trop l'interet d'utiliser des L, autant utiliser des O happy.gif
sypotu le 06/11/2009 à 18:41
@Rézus
Pour le texte en effet winkle.gif , 85 c'est si on ne met pas d'espace avant les :

Liste des variables :
  • P: les points
  • X: abscice du bloc
  • Y: ordonée du bloc
  • N: abscice du bloc avant mouvement
  • O: ordonée du bloc avant mouvement
  • T: code touche
  • Z: plusieures utilités dans des For
  • [theta]: test ligne complette
  • A: ligne étant remplacé par celle du dessus
Rézus le 06/11/2009 à 19:34
Merci,je me met au travail.
Rézus le 08/11/2009 à 18:54
Voilà,je suis parti du programme de sypotu que j'ai modifié pour que le jeu soit plus rapide.Maintenant,ce sont des objets entiers qui tombent,reste a trouver un algorithme qui permettrai de faire pivoter les objets.

Code
:EffDessin
:CoordRect:QuadNAff:AxesNAff
:0->Xmin:0->Ymax:94->Xmax:-62->Ymin
:For(Z,0,1
:Ligne(Z,0,Z,-62
:Ligne(47+Z,0,47+Z,-62
:End
:Ligne(0,-62,46,-62
:Lbl A
:0->D:3->E:3->F:3->G:3->I:0->J:3->H
:entAléat(1,5->C
:If C=2
:Goto 2
:If C=3
:Goto 3
:If C=4
:Goto 4
:If C=5
:Goto 5
:Lbl B
:21->X:-3->Y
:For(Z,0,9E99
:X->N:Y->O
:Y-3->Y
:codeTouch->T
:X-3(T=24)+3(T=26)->X
:If pxl-Test(-Y+1,X)=1 ou pxl-Test(-Y-J+1,X+I)=1
:N->X
:Pt-Off(N,O,2
:Pt-Off(N+I,O+J,2
:Pt-Off(N+D,O+E,2
:Pt-Off(N+F,O+G,2
:Pt-On(X,Y,2
:Pt-On(X+I,Y+J,2
:Pt-On(X+D,Y+E,2
:Pt-On(X+F,Y+G,2
:For(Z,0,H,3
:If C=5 et Z=H et pxl-Test(-Y-J+2,I)=1
:Goto C
:If pxl-Test(-Y+2,X+Z)=1
:Goto C
:End
:End
:Lbl C
:If Y[> ou =]-6
:Stop
:0->A
:For(Z,2,44,3
:A+pxl-Test(-Y+1,Z->A
:End
:If A<15
:Goto A
:-Y->A
:Repeat A[< ou =]6
:For(Z,3,45,3
:If pxl-Test(A-2,Z)=1
:Pt-On(Z,-A,2
:If pxl-Test(A-2,Z)=0
:Pt-Off(Z,-A,2
:End
:A-3->A
:End
:Goto A
:Lbl 2
:6->I:3->D:0->E:6->H
:Goto B
:Lbl 3
:0->F:6->G
:Goto B
:Lbl 4
:9->I:6->D:0->E:0->G:9->H
:Goto B
:Lbl 5
:6->I:3->J:3->D:0->E:6->H
:Goto B


J'ai testé et j'ai pas trouvé de bug mais ça ne veut pas dire qu'il n'y en a pas.
Pour les variables,j'ai rajouté:
-les couples (D;E) et (F;G) qui sont les coordonnées par rapport a X et a Y des points 3 et 4 de chaque objet.
-Le couple (I;J):les coordonnées du point 2 de chaque objet qui est toujours le point le plus à droite.
-H:le nombre de pixels de toutes les faces inférieures de chaque objet (sauf les deux pixels a l'extrème limite.
-C:Le type d'objet
C=1 c'est le carré
C=2 c'est le triangle
C=3 c'est le "L"
C=4 c'est la barre
C=5 c'est le "carré décalé"

Et vous vous en êtes où ?
sypotu le 08/11/2009 à 22:56
SUPER ! bigmouth.gif
Ça marche niquel !!!
la je suis trop fatigué mais demain je réfléchit à l'algorythme de rotation. winkle.gif
Encore bravo !
Rézus le 09/11/2009 à 18:50
Ou pas,j'ai oublié de mettre le "L" à l'envers,il faudrait le rajouter pour C=6,j'ai pas mis non plus le "carré décalé" vers la gauche. moodforlove.gif
Et du coup,comme le programme fait le pixel-Test de tous les points en dessous de Y,X et que pour le carré décalé la base de l'objet est plus basse que Y,le pixel-Test est effectué dans l'objet et pas à sa base,il faudrait rajouter 3 variables qui permettraient de gérer le décalage.

Enfin je me comprends,c'est difficile à expliquer,tu me comprendras quand tu auras étudié le programme.
sypotu le 09/11/2009 à 20:08
Ouai mais bon je pense que pour les blocs il y en a assez pour le moment, on verra à la fin.

Pour l'autre pb je comprends puisque ayant essayer de faire le même prgm j'ai eu le même pb. Je réfléchit a une solution... winkle.gif

une petite étourderie :
6->H à rajouter dans le Lbl 3

à rajouter pour la rotation (avec fleche du haut) entre les pts-off et les pts-on :
Code
If T=25 et C=/=1:Then
I->Z:J->I:Z->J
D->Z:E->D:Z->E
F->Z:G->F:Z->G
If C=2 ou C=3:Then
F->Z:I->F:Z->I
G->Z:J->G:Z->J
End:End
Sangohan38 le 10/11/2009 à 07:13
Ce serais plus rapide de faire un label car en terme de vitesse, un label ralentis moins qu'un Then/End.

Sangohan38
dysto le 11/11/2009 à 02:14
Code
C=/=1


??????
sypotu le 11/11/2009 à 08:17
Alors happy.gif
=/= c'est le signe différent de

et avec les lbl ça donne :
-à rajouter entre les Pt-Off et les Pt-On :
Code
If T[différent de]25 ou C=1
Goto D
I->Z:J->I:Z->J
D->Z:E->D:Z->E
F->Z:G->F:Z->G
If C[différent de]2 et C[différent de]3
Goto D
F->Z:I->F:Z->I
G->Z:J->G:Z->J
Lbl D
Rézus le 11/11/2009 à 21:15
Le problème avec cet algorithme c'est que les pièces ne font pas une rotation par exemple:
Code
O
O
OO
devient
Code
O
OOO
,puis redevient un "L" normal si on réappuis.

J'ai remplacé le code de Sypotu après le if T[différent ce]25 ou C=1 par
Code
:I->J:-J->I:Z->J
:D->Z:-E->D:Z->E
:F->Z:-G->F:Z->G

La rotation se fait bien mais il arrive un moment où le bloc de coordonnées (X;Y) se retrouve au dessus d'un autre bloc,du coup le pxl-Test est égal à 1 et l'objet s'arrête tout seul dans le vide.

Alors Casse-tête:
soit un point de coordonnées (X;Y) et un point de coordonnées (X+I;Y+J) si X<X+I ou Y<Y+J,il faut que les deux points s'inversent autrement dit X devient X+I et X+I devient X,idem avec Y et Y+J.

J'avais donc mis dans un label le code suivant:
Code
:X+I->Z
:X->¤
:Z-¤->I
:Z->X


Mais j'ai pas eu le temps de finir,ni de reprogrammer depuis avant-hier.
PS:Après il faut rajouter un Lbl pour redéfinir les variables I,J,D,E,... pour chaque pièce lorsqu'il y a rotation puisqu'elle n'a plus le même nombre de blocs sur son "pied" et que ce pied change de forme.
PS2:J'ai aussi rajouté les deux types d'objets qui manquent et les trois variables K,L,M,qui permettent de faire le pixel-Test des points qui sont sous le pied quelque soit sa forme.

D'ailleurs voilà mon code (pas fini et sans l'inversion des points parce que j'ai eu piti problème):
Code
EffDessin
CoordRect:QuadNAff:AxesNAff
0ü ( ) Xmin:0ü ( ) Ymax:94ü ( ) Xmax:ú ( ) 62ü ( ) Ymin
For(Z,0,1
Ligne(Z,0,Z,ú ( ) 62
Ligne(47+Z,0,47+Z,ú ( ) 62
End
Ligne(0,ú ( ) 62,46,ú ( ) 62
Lbl A
0ü ( ) D:3ü ( ) E:3ü ( ) F:3ü ( ) G:3ü ( ) I:0ü ( ) J:3ü ( ) H:ú ( ) 1ü ( ) K:ú ( ) 1ü ( ) L:0ü ( ) M
entAl–at(1,7ü ( ) C
If C=2
Goto 2
If C=3
Goto 3
If C=4
Goto 4
If C=5
Goto 5
If C=6
Goto 6
If C=7
Goto 7
Lbl B
21ü ( ) X:ú ( ) 3ü ( ) Y
For(Z,0,9û99
Xü ( ) N:Yü ( ) O
Y-3ü ( ) Y
codeTouch(ü ( ) T
X-3(T=24)+3(T=26)ü ( ) X
If pxl-Test(ú ( ) Y+2,X)=1 ou pxl-Test(ú ( ) Y-J+2,X+I)=1
Nü ( ) X
Pt-NAff(N,O,2
Pt-NAff(N+I,O+J,2
Pt-NAff(N+D,O+E,2
Pt-NAff(N+F,O+G,2
If Tø25
Goto B4
Iü ( ) Z:ú ( ) Jü ( ) I:Zü ( ) J
Dü ( ) Z:ú ( ) Eü ( ) D:Zü ( ) E
Fü ( ) Z:ú ( ) Gü ( ) F:Zü ( ) G
Goto B4
If C=2
Goto E2
If C=3
Goto E3
If C=4
Goto E4
If C=5
Goto E5
If C=6
Goto E6
If C=7
Goto E7
Lbl B4
Pt-Aff(X,Y,2
Pt-Aff(X+I,Y+J,2
Pt-Aff(X+D,Y+E,2
Pt-Aff(X+F,Y+G,2
For(Z,0,H,3
If Zù ( ) K et Z÷ ( ) L et pxl-Test(ú ( ) Y+2,X+Z)=1
Goto C
If Zù ( ) K et Z÷ ( ) L
End
If pxl-Test(ú ( ) Y+2+M,X+Z)=1
Goto C
End
End
Lbl C
If Yù ( ) ú ( ) 6
Stop
0ü ( ) A
For(Z,2,44,3
A+pxl-Test(ú ( ) Y+1,Zü ( ) A
End
If A<15
Goto A
ú ( ) Yü ( ) A
Repeat A÷ ( ) 6
For(Z,3,45,3
If pxl-Test(A-2,Z)=1
Pt-Aff(Z,ú ( ) A,2
If pxl-Test(A-2,Z)=0
Pt-NAff(Z,ú ( ) A,2
End
A-3ü ( ) A
End
Goto A
Lbl 2
6ü ( ) I:3ü ( ) D:0ü ( ) E:6ü ( ) H
Goto B
Lbl 3
0ü ( ) F:6ü ( ) G:6ü ( ) H
Goto B
Lbl 4
9ü ( ) I:6ü ( ) D:0ü ( ) E:0ü ( ) G:9ü ( ) H
Goto B
Lbl 5
3ü ( ) D:6ü ( ) G
Goto B
Lbl 6
6ü ( ) I:3ü ( ) J:3ü ( ) D:0ü ( ) E:6ü ( ) H:0ü ( ) K:4ü ( ) L:ú ( ) 3ü ( ) M
Goto B
Lbl 7
6ü ( ) I:ú ( ) 3ü ( ) J:3ü ( ) D:0ü ( ) E:ú ( ) 3ü ( ) G:6ü ( ) H:0ü ( ) K:2ü ( ) L:3ü ( ) M
Goto B
Lbl E2
Lbl E3
Lbl E4
Lbl E5
Lbl E6
Lbl E7


Désolé j'ai pas le temps de le rendre plus lisible ce soir.
sypotu le 11/11/2009 à 22:27
Oulah !
Ça commence à devenir compliqué !
Mais je pense que tu te rapproche de la fin winkle.gif
Bravo et bon courage pour la suite !
Rézus le 12/11/2009 à 18:31
Eh ! me laisse pas ! chuis atteint de flemmite aigue !!
sypotu le 12/11/2009 à 22:07
bon alors demain je me remet au boulôt ! bigmouth.gif
sypotu le 13/11/2009 à 16:49
J'ai testé avec les nouvelles formes et les variables K,L,M ça marche plutôt bien.
Par contre la nouvelle rotation ne marche pas, on se retrouve avec un bloc en 2 partie happy.gif

Je me demande si il est vraiment utile dde faire une rotation complette...Qu'en pensez vous ?
Voici la liste des blocs avec leur rotation non complette :
Code
OO
OO

 O     O
OOO -> OO
       O   

O
O -> O
OO   OOO

 O
 O -> OOO
OO    O

        O
OOOO -> O
        O
        O

 OO    O
OO -> OO
      O

OO     O
 OO -> OO
        O
Rézus le 13/11/2009 à 19:52
Oui c'est vrai,ma rotation bug pour certains objets,je suis en train d'y réfléchir.
Le problème c'est que la rotation incomplète ne permet pas d'avoir des pièces comme
Code
OOO
 O

OO
O
O


Après si on peut reprendre ton système en trouvant un moyen de continuer la rotation je suis pour.Au début je l'avais fait avec deux touches mais c'était le bordel j'ai arrêté,faudrai peut-être y réfléchir
Rézus le 14/11/2009 à 18:49
Qu'est-ce que t'en dis ?
WoKeRnOZ le 14/11/2009 à 19:45
Faire des progs en output, c'est des choses, et j'men sort, mais alors avec le graph xD
J'capte rien a votre tetris la :/ crazy.gif
Genre Pxltest et tout, je sais meme pas c'que c'est..
Apres p'tetre que en me penchant mieux dessus... bigmouth.gif
sypotu le 14/11/2009 à 20:12
ouai avec 2 bouton on doit pouvoir faire un truc pas trops mal... j'y réfléchis...

@ WoKeRnOZ
bin c'est pas bcp plus compliqué winkle.gif
lis le chapitre 8:DESSIN de la notice happy.gif
dysto le 14/11/2009 à 21:09
C'est pas bien compliqué, de tête me semble que ça donne :


Pxl-On(X,Y) : Allume un Pixel aux coordonnées X,Y.
Pxl-Off(X,Y) : Éteint " " " " " " " " " " " ".
Pt-On(X,Y,F) : Allume un petit carré de 3*3 si F=2, un petit plus si F=3 et un pixel unique si F=1 aux coordonnées X,Y.
Pt-Off(X,Y,F) : Éteint " " " " " " " " " " " ".
Pxl-Change(X,Y) : Sers d'interrupteur. Si il y a un pixel allumé en X,Y, il sera éteint et inversement.
Pt-Change(X,Y) : Idem je crois. Contrairement au Pt-On ou Pt-Off, il n'y a pas de possibilité de choisir une forme.
Pxl-Test(X,Y) : Renvoie 1 si il y a un pixel allumé en X,Y sinon renvoie 0.


Voila un petit résumé pour les POINTS ^_^ !
sypotu le 14/11/2009 à 22:32
Voilà ! c'est ce que j'avais la flemme d'écrire ^^ merci dysto !

juste pour ce qui est en pxl ce n'est pas au coordonnées x,y mais comme Output à ligne,colonne
Houla ! Je sais pas si c'est compréhensible ce que je dis happy.gif
dysto le 14/11/2009 à 23:46
Oui, dans le graph, Y varie entre 0 et 62 et X entre 0 et 94.
sypotu le 15/11/2009 à 07:39
le mieux c'est de faire un exemple :
  • pt-on(0,0) affiche un point de coordonée 0,0 il est donc au croisement des deux axes. Si on modifie la fenêtre, sa position change.

  • pxl-on(0,0) allume le pixel à l'angle en haut à gauche (1ère ligne/1ère colone) et pxl-on(62,94) le pixel en bas à gauche. Ces positions sont toujours les même pour n'importe quelle fenêtre.
WoKeRnOZ le 15/11/2009 à 11:33
Aaah ok bigmouth.gif
Merci bigmouth.gif

EDIT : Ok pour pxl test... Mais a quoi sa sert? crazy.gif
Et pxl/pt change j'ai pas trop compris :o
dysto le 15/11/2009 à 12:58
Oula, Pxl-Test est très très utile !

Code
:If Pxl-Test(0,0)
:Then
:Text(10,0,"IL Y A UN PIXEL EN (0,0)
:Else
:Text(10,0,"IL N'Y A PAS DE PIXEL EN (0,0)
:End


La tu demandes : "Y a t-il un Pixel allumé en 0,0 ?
Et la machine te réponds oui ou non ^_^ !
C'est très utile pour les jeux utilisant le graph !

Et pour Pxl/Pt-change c'est très simple, je vais te faire une démo en utilisant le Pxl-Test :
Code

:If Pxl-Test(0,0)
:Then
:Pxl/Pt-Change(0,0)


La tu demandes à la calto si il y a un pixel allumé en 0,0 et si oui, le Pxl-Change l'éteint en dessous (si il avait était éteint, elle l'aurait allumé).
Bien sur dans cet exemple, c'est mieux d'utiliser un Pxl-On ou Off selon le résultat que l'on souhaite mais c'est un exemple alors ^_^ !
WoKeRnOZ le 15/11/2009 à 13:25
Ah ok bigmouth.gif
Mais pxl test est utile tout seul?
Parce qu'en l'utilisant en "combo"(bigmouth.gif) avec pxl change, je vois l'utilité, mais tout seul...?
Apres faudrait que je vois dans quels types de programmes j'pourrais utiliser ces fonctions happy.gif

Merci por les explications minied.gif