Mini projet LOO
Dependencies: mbed APDS_9960 mbed-rtos
Home du projet
Diff: src/cJeu.cpp
- Revision:
- 38:418278e5eb6b
- Parent:
- 37:a08a58f5e9aa
- Child:
- 40:08490d120ec4
--- a/src/cJeu.cpp Sun Apr 24 20:15:03 2016 +0000 +++ b/src/cJeu.cpp Sun Apr 24 21:35:57 2016 +0000 @@ -1,13 +1,9 @@ #include "cJeu.h" - #include "rtos.h" - -///////////////////////////////////// #include "cScore.h" - //Constructeur par défaut cJeu::cJeu() { @@ -17,6 +13,7 @@ //Second constructeur: //Il crée de crée une matrice de x LEDs de large sur y LEDS de HAUT, //avec la broche pin comme entrée d'interruption si détection de mouvement du capteur +//Entrées: x: nombre de colonnes, y: nombre de lignes cJeu::cJeu(unsigned char x, unsigned char y) { // On met le score à 0 @@ -72,7 +69,6 @@ } //Méthode d'initialisation de la liaison SPI et de la matrice RGB - void cJeu::initialiser() { //paramètres: fréquence 100kHz (maximum pour la matrice RGB 125KHz) @@ -83,12 +79,13 @@ _mat->clear(); _spi.envoyerMatrice(*_mat); wait(1); - /////////////////////////////////////////////////////////////////////// + // On affiche le début du message d'accueil MoveYourTetris _mat->messageAccueil(); _spi.envoyerMatrice(*_mat); wait(1); int i; i=0; + //On décale le message pour affichage while(i<51) {//67 - 16= nbColonnes du message - nbLignes de la matrice _mat->decalerMatrice(); _spi.envoyerMatrice(*_mat); @@ -110,11 +107,13 @@ _spi.envoyerMatrice(*_mat); } } + //Enfin on efface la matrice _mat->clear(); _spi.envoyerMatrice(*_mat); } //Méthode de création d'une nouvelle pièce de manière pseudo-aléatoire +//Entrées void cJeu::nouvellePiece() { //On génère un nombre aléatoire entre 1 et 5 pour la pièce @@ -314,18 +313,22 @@ perdu = true; } -/////////////////////////////////////////////////////////////////////// + //Tant que la pièce en cours peut descendre while(col.bordBas(*_ptrForme, *_mat) == false && col.pieceBas(*_ptrForme, *_mat) == false && !perdu) { + //On lit la message queue osEvent evt = osMessageGet(*_queue, 500); if (evt.status == osEventMessage) { message_t *message = (message_t*)evt.value.p; + //et on récupère la valeur du mouvement détecté _mvt = message->val; osPoolFree(*_pool, message); + //Si pas de mouvement reçu } else { _mvt = 0; } pc.printf("Valeur envoyee = %d\n", _mvt); - //wait(0.5); + //Selon la valeur du mouvement, on effectue le mouvement de la pièce correspondant. + //A chaque fois, on test de non-collision est fait avant de faire le mouvement. switch(_mvt) { case 1: { pc.printf("Rotation..."); @@ -374,6 +377,7 @@ } delete _ptrForme; pc.printf("Suppression du pointeur\n"); + //On regarde si des lignes sont complètes while(ligneComplete()==1){ pc.printf("Ligne complete\n"); pc.printf("score: %d\n", _score);