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.