Pumpktris - la citrouille de Tetris (5 / 10 étapes)

Etape 5: Programmation du jeu

Télécharger le joint Pumpktris.ino.zip, décompressez-le et ouvrez le fichier dans l’environnement de développement Arduino. Compilez et transférez-le sur votre Arduino. Vous devriez maintenant être en mesure de jouer sur la mini LED matrix vous mis en place à l’étape précédente. J’ai essayé de commenter le code autant que possible, mais voici un aperçu général des principaux processus :

Décrivant les formes

Il y a sept tetrominos, chacune avec 4 pixels et chacune avec quatre rotations possibles. Nous stockons tout cela dans un tableau multidimensionnel : la première dimension, consistant en sept formes, la deuxième dimension contenant les quatre rotations pour chaque forme, les descriptions de quatre pixels contenant troisième qui consistent en un X et Y coordonner.

Par exemple, cet article décrit la forme de « T » :

/* T */ {
/ * angle 0 * / {{0,1}, {1, 1}, {2, 1}, {1,2}},
/ * angle 90 * / {{1,0}, {1, 1}, {2, 1}, {1,2}},
/ * angle 180 * / {{1,0} {0,1}, {1, 1}, {2, 1}},
/ * angle 270 * / {{1,0} {0,1}, {1, 1}, {1,2}}
}

Suivi de la pièce Active

Pour garder une trace de l’ouvrage actuellement en jeu, le programme tient à jour une variable activePiece . Il s’agit de l’index de la forme active, le niveau le plus haut du tableau. Il maintient également une rotation variable contenant l’index de la rotation actuelle. Une aucune variable pistes jusqu’à gauche ou à droite (0-7) chaque pièce est et aucune traque dans quelle mesure (0-15) le Conseil, il est tombé. Pour dessiner la pièce active le programme ajoute que x et Y compenser les valeurs de coordonnées X et Y de chaque pixel, tiré de la rotation actuelle de la pièce sélectionnée.

Les pièces fixes de suivi

Le programme utilise un tableau de 16 octets pour suivre les pièces fixes, avec chaque octet représentant une ligne. Par exemple, le tableau ci-dessous représente une forme de L, assis au centre des deux lignes de fond (comme indiqué par les bits à 1 dans les deux derniers octets) :

sampleGrid Byte [16] =
{
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00100000,
B00111000
};

Détection de collision

Lorsqu’une tentative est faite pour déplacer la pièce active, le programme vérifie d’abord la nouvelle position contre le tableau de pièces fixes. S’il n’y a aucune collision, le déménagement est accueilli et la matrice est redessinée. Si une collision est détectée lors de la tentative pour aller à gauche, à droite, ou de faire pivoter, l’action est interdite. Si une collision est détectée lors de la tentative de laisser tomber une pièce, la pièce devient fixe en position et est ajoutée à la matrice de pixels fixes.

Laisser tomber les morceaux automatiquement

Le rythme du jeu est contrôlé par les variables gravityTrigger et stepCounter . Chaque boucle du programme incrémente stepCounteret chaque fois stepCounter atteint le nombre stocké dans gravityTrigger, il abandonne le morceau active de niveau.

Comme le jeu progresse, gravityTrigger est réduite pour que la pièce active tombe plus fréquemment jusqu'à ce qu’enfin il est en baisse dans chaque boucle du programme.

Chaque fois qu’un élément d’actif est fixé à la grille, le programme vérifie d’octets/Lignes complètes (B11111111). S’il en trouve, il clignote eux marche trois fois, puis supprime et supprime les lignes ci-dessus pour combler le vide.

Dépannage
Si les pièces ne sont pas tomber de haut en bas, mais plutôt aller d’un côté à l’autre, changer la valeur passée dans les lignes « matrixTop.setRotation(1); » et/ou « matrixBottom.setRotation(1); » dans la boucle « setup() ».

Si les morceaux commencent dans la matrice mal, changer l’emplacement physique de chaque matrice ou inverser les adresses déclarées dans le « matrixTop.begin(0x70); » et « matrixBottom.begin(0x71); » les lignes de la boucle « setup() ».

Si certaines lignes ou des colonnes ne s’allume pas, agitez la matrice de LED minie dans les entêtes des femelles. Ils ne peuvent pas faire bon contact.

Articles Liés

GÉANT Pumpktris

GÉANT Pumpktris

l'année dernière pour Halloween, HaHaBird - alias Nathan Pryor, illuminé la communauté Instructables avec son Pumpktris. C'était un des plus cool Instructables jamais posté. Maintenant que nous avons ici à Instructables sont voisins avec le merveille
Tetris Table

Tetris Table

Disons que vous avez des centaines de cubes en bois et un rêve... un rêve très particulier.  Plus précisément, le rêve d'avoir une table de bout sur le thème de Tetris pour votre salon ou votre patio.Ou vous n'avez pas eu ce rêve, mais ça sonne un pe
Citrouille Cocktail

Citrouille Cocktail

citrouille CocktailDrôle d'appeler cela une citrouille sont cocktail, soit parce que, bien qu'il ressemble à un, il n'a aucune citrouille en elle.  Je ne suis pas un fan de mettre la purée de citrouille dans l'une de mes boissons juste pour le plaisi
Nixie Jacobs ladder citrouille

Nixie Jacobs ladder citrouille

Cette année pour un Halloween partie je voulais quelque chose d'un peu différent de l'habituelle citrouille et quelque chose qui me laisserait jouer avec mon nouveau microcontrôleur et les bargraphs nixie.Alors je vous présente le nixie citrouille éc
Tetris-inspiré modulaire lampe

Tetris-inspiré modulaire lampe

Il s'agissait d'une idée de mon carnet de croquis d'occupation pendant un certain temps : une lampe modulaire dont les unités seraient illuminait au contact de l'un de l'autre. J'ai eu des normes délicats pour ce projet :doit être faible coût que pos
Interactive citrouille d’Halloween (Arduino basé)

Interactive citrouille d’Halloween (Arduino basé)

L'IDÉEUne citrouille qui brille, secoue et hurle... [vidéo]C'est l'Halloween, alors, naturellement, que nous devions avoir un projet lié à cela.L'idée est d'avoir une citrouille, qui détecte la présence d'une personne essayant d'obtenir pour les bonb
Patch de citrouille d’Halloween IOT

Patch de citrouille d’Halloween IOT

Objectif : Lorsque enfants s'approchent de la maison du Patch de citrouille prend vie fournissant un environnement interactif basé sur le mouvement et la détection des sons.Étape 1: Couche de ServiceÉtape 2: Flux de travailQuand le mouvement est déte
Encré citrouille

Encré citrouille

créer une citrouille tatouée unique avec quelques lignes intéressantes, dessins et modèles.Étape 1: fournitures Stylos d'ArtCitrouille de Michaels (blanc ou orange)Peinture blanchePinceau en mousseÉtape 2: Conceptions citrouilles 1. vous pouvez achet
Sequin bricolage citrouilles

Sequin bricolage citrouilles

Ajouter un peu bling à vos décorations d'Halloween cette année avec ces citrouilles Sequin Diy.Étape 1: Vous aurez besoin :Mini citrouilles ou courges, épingles de couture et de paillettes.Etape 2: Conception de votre modèle. Commencez par cartograph
Fumeur non chimiques citrouille

Fumeur non chimiques citrouille

Il y a tant de grands Arduino contrôlée citrouilles / jack-o-lanternes ! Il s'agit d'un autre, avec un numérique chandelles LED vacillante et vapeur d'eau comme « ne fumer » donc aucun produit chimique ! Que de l'eau!La « fumée » provient d'un fabric
Décoration citrouille en carton simple

Décoration citrouille en carton simple

SalutDans ce instructable je vais vous montrer comment faire une décoration de citrouille simple, ceux-ci sont incroyablement faciles à faire et peut être fait en environ 5 TanferCette instructable est aussi un peu d'une refonte d'un de mes premier i
Citrouilles en bois

Citrouilles en bois

c'est Halloween, et quelle meilleure décoration décorer votre porche qu'une citrouille, mais pas n'importe quel citrouille une citrouille en bois.Etape 1: découpe Il s'agit de mon premier projet que j'ai fait dans mon nouveau hangar, ce n'est pas le
La citrouille donnant

La citrouille donnant

L'équipe de gnou fait un jackolantern intelligent sur une récente journée de l'équipe qui trahit les bonbons même lorsque vous n'êtes pas maison.Nous avons utilisé une carte Arduino Uno comme le cerveau avec un capteur de mouvement et quelques boules
Comment faire un chariot de citrouille enchantée

Comment faire un chariot de citrouille enchantée

Si vous n'avez pas fait un ferry marraine comme Cendrillon, vous pouvez faire votre propre transport citrouille et celui-ci va durer toute la semaine - pas seulement jusqu'à minuit.Quelques accessoires imprimés 3D peuvent transformer un Halloween ord