2010-03-15 9 views
1

Je crée un clone Tetris en C# avec XNA, et je ne sais pas comment implémenter réellement les blocs.Comment créer des blocs Tetris dans XNA avec C#?

Je ne pense pas que faire les formes comme des images fonctionnera (parce que les parties sont enlevées lorsque les lignes sont formées), donc j'ai des blocs pour composer les pièces comme This.

Malheureusement, je ne sais pas comment définir réellement les blocs pour faire les pièces, et je ne sais comment les manipuler pour les faire tourner, etc.

Edit: Je voudrais aussi avoir besoin d'aide dans l'apprentissage comment faire la grille de Tetris aussi.

Répondre

1

Je n'ai pas créé tetris avant, mais après réflexion, je crois que j'utiliserais une simple matrice pour créer mes pièces. Par exemple, votre plateau de jeu entier serait une grande matrice. Un sous-ensemble de cette matrice, disons un bloc 4x4, serait une pièce de jeu. Les parties de ce bloc 4x4 qui seraient remplies seraient déterminées par la pièce particulière que vous voulez créer. Chaque partie de la matrice peut avoir un drapeau booléen qui indique si elle est remplie ou non. C'est une vue très simpliste, mais je pense que c'est une solution viable.

1

Utilisez une matrice booléenne pour modéliser l'état de l'écran. Chaque pièce est elle-même une autre matrice booléenne plus petite.

La rotation d'une pièce est aussi simple que de jouer avec les coordonnées (je vous l'ai laissé).

A propos de la méthode de rendu, tracez simplement un pavé pièce pour chaque vraie valeur dans votre matrice ored avec la pièce en cours de décalage et la rotation.

1

Pour les blocs, je suggère fortement de travailler en 3D. Vous pouvez toujours faire en sorte que le jeu ressemble à 2D en verrouillant l'appareil photo, etc., mais vous bénéficierez beaucoup du travail dans les graphiques vectoriels. Vos cubes seront des cubes simples (plats ou avec une certaine profondeur) que vous tournez et déplacez autour de l'écran.

Pour la grille, regardez les réponses @ fortran et @ aaron, une matrice booléenne fera l'affaire.

1

Peut-être que ce lien vers Coding4Fun aidera. C'est en allemand, mais vous devriez être en mesure d'obtenir le code source et jeter un oeil sur la façon dont le problème est résolu ici.

Juste pour être sûr, voici le direct download link.