Poster un nouveau sujet Poster une réponse <<   Page: , 2, , , , ,      >>
Tetris
Auteur Message
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Mer 04 Nov 2009, 11:28   Citer 

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



----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Jeu 05 Nov 2009, 19:02   Citer 

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.

 Adresse email Haut de page Bas de page 
 
Floyd The Wolf
Avatar

Autorisation : Membre
Nb de messages : 14
Inscrit le : Mer 04 Nov 2009, 18:35
Posté le : Jeu 05 Nov 2009, 20:47   Citer 

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.

 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Ven 06 Nov 2009, 7:17   Citer 

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

 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Ven 06 Nov 2009, 18:25   Citer 

puis je ne vois pas trop l'interet d'utiliser des L, autant utiliser des O happy.gif

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Ven 06 Nov 2009, 18:41   Citer 

@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


----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Ven 06 Nov 2009, 19:34   Citer 

Merci,je me met au travail.

 Adresse email Haut de page Bas de page 
 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Dim 08 Nov 2009, 18:54   Citer 

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ù ?

 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Dim 08 Nov 2009, 22:56   Citer 

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 !

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Lun 09 Nov 2009, 18:50   Citer 

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.

 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Lun 09 Nov 2009, 20:08   Citer 

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



----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Mar 10 Nov 2009, 7:13   Citer 

Ce serais plus rapide de faire un label car en terme de vitesse, un label ralentis moins qu'un Then/End.

Sangohan38

 Adresse email Haut de page Bas de page 
 
dysto



Autorisation : Membre
Nb de messages : 200
Inscrit le : Mar 20 Oct 2009, 18:58
Posté le : Mer 11 Nov 2009, 2:14   Citer 


Code
C=/=1



??????

 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Mer 11 Nov 2009, 8:17   Citer 

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



----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Mer 11 Nov 2009, 21:15   Citer 

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.

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Mer 11 Nov 2009, 22:27   Citer 

Oulah !
Ça commence à devenir compliqué !
Mais je pense que tu te rapproche de la fin winkle.gif
Bravo et bon courage pour la suite !

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Jeu 12 Nov 2009, 18:31   Citer 

Eh ! me laisse pas ! chuis atteint de flemmite aigue !!

 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Jeu 12 Nov 2009, 22:07   Citer 

bon alors demain je me remet au boulôt ! bigmouth.gif

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Ven 13 Nov 2009, 16:49   Citer 

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



----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Ven 13 Nov 2009, 19:52   Citer 

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

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse <<   Page: , 2, , , , ,      >>





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink