Tetris

Tetris - C - Programmation

Marsh Posté le 07-04-2010 à 19:45:53    

Bonjour,
J'ai pour projet de créer un TETRIS, mais je ne suis pas très forte en programmation et j'ai besoin de votre aide !
Je voudrais commencer par définir les 7 formes basiques du tétris, donc il faudrait que je crée 7 tableaux 4*4 ? mais une fois que j'ai fait ça comment faut il que je fasse?
Merci de votre aide

Reply

Marsh Posté le 07-04-2010 à 19:45:53   

Reply

Marsh Posté le 07-04-2010 à 22:57:06    

Pas forcément. Les 7 pièces de tetris correspondent à toutes les possibilités de mettre ensemble 4 blocs.
 
Tu peux modéliser une pièce de tetris par une chaine de directions. Par exemple, hhhh serait une barre horizontale. Dans l'absolu, t'es pas obligé de prédéfinir les pièces, tu peux te contenter de les tirer aléatoirement à chaque itération. Quelque soit la séquence de 4 carrés que tu tire, ce sera une pièce valide.  
 
Am I clear?

Reply

Marsh Posté le 08-04-2010 à 09:29:47    

snafu8 a écrit :

Pas forcément. Les 7 pièces de tetris correspondent à toutes les possibilités de mettre ensemble 4 blocs.

 

Tu peux modéliser une pièce de tetris par une chaine de directions. Par exemple, hhhh serait une barre horizontale. Dans l'absolu, t'es pas obligé de prédéfinir les pièces, tu peux te contenter de les tirer aléatoirement à chaque itération. Quelque soit la séquence de 4 carrés que tu tire, ce sera une pièce valide.

 

Am I clear?

 

Ça sent l'optimisation prématurée. Et surtout, c'est pas forcément juste: il faut empécher de se recouvrir soi même dans son parcours, sinon on va avoir des pièces trop courtes (ex: Bas, Bas, Haut), mais tu peux pas générer le T si tu fais ça. Ou alors tu commences à avoir une boucle "tant que la forme générée fait pas 4 cases" qui nécessite de calculer la forme crée au fur et à mesure.... (et en bonus, selon les règles des tetris que tu utilises, les pièces qui arrivent n'ont pas le droit d'être dans n'importe quelle orientation).

 

Autant stocker la pièce toute faite, d'autant plus que pour un Tetris un poil conforme, tu dois gérer correctement l'axe de rotation quand tu fais tourner la pièce, c'est plus judicieux d'avoir une table explicite des formes et rotations pour ça. Un grand tableau avec dans chaque case la forme de la pièce sous un certain format, et les numéros des formes quand tu fais tourner la pièce à droite et à gauche.

 

Pour le format de chaque pièce, poses toi surtout la question de comment tu va pouvoir répondre en code aux questions :
- La pièce peut-elle descendre d'un cran ?
- La pièce peut-elle tourner ?
- La ligne est-elle complète ? (ça c'est pour le format de la grille, mais c'est fortement lié vu que tu devra y penser pour répondre aux deux premières questions).
Les deux premières questions sont en fait la même: si il y avait une pièce "comme ça", entrerait-elle en conflit avec le reste de la grille ?

 

Soucie toi surtout de répondre à la question avec un code clair, c'est pas un Tetris qui va mener la vie dure à une machine moderne, aucune raison de vouloir optimiser.


Message édité par 0x90 le 08-04-2010 à 09:31:10

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 08-04-2010 à 09:44:55    

Parfaitement d'accord avec l'ami hexadécimal, la première chose à faire est de modéliser de façon un minimum abstraite la phase de jeu.
 
Un des comportements peut être décrit comme "à chaque tick de timer, si la pièce n'est pas déjà en contact avec les pièces préalablement mises en place, la descendre d'une ligne, sinon la figer". Le plus simple est de décrire chaque élément du jeu de cette façon, ça donne directement le pseudo-code.
 
Il est important de bien faire la distinction entre traitement et IHM, même si par la suite il est possible dans un souci d'optimisation de les fusionner plus ou moins partiellement.

Reply

Marsh Posté le 16-04-2010 à 20:33:27    

Je vous remercie pour vos réponses ;)
mais comme je suis débutante j'ai vraiment du mal a tout comprendre,  
est ce que je pourrais avoir un exemple, pour creer n'importe quelle forme, peut etre que ca m'aidera plus ?

Reply

Marsh Posté le 16-04-2010 à 21:14:27    

j'ai déja crée ma structue piece :  
struct Piece  
{

Reply

Marsh Posté le 16-04-2010 à 21:16:04    

struct Piece
{
   int tab_piece[4][4];
};
typedef struct Piece Piece ;  
 
j'ai initialisé mon tableau a 0 , quelqu'un peut il me donner une piste avec l'exemple d'une piece, le T par exemple?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed