Mini projet LOO

Dependencies:   mbed APDS_9960 mbed-rtos

Dependents:   MoveYourTetris_OK

Home du projet

Committer:
Willheisen
Date:
Sun Apr 24 22:11:55 2016 +0000
Revision:
40:08490d120ec4
Parent:
35:7aef0bbdf335
VERSION FINALE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Willheisen 16:5c3d61584f51 1 #include "cCollision.h"
Willheisen 16:5c3d61584f51 2
clementdoreau 18:45dbd9948c97 3 cCollision::cCollision()
clementdoreau 18:45dbd9948c97 4 {
clementdoreau 18:45dbd9948c97 5
clementdoreau 15:3782eb2bc312 6 }
clementdoreau 15:3782eb2bc312 7
clementdoreau 18:45dbd9948c97 8 cCollision::~cCollision()
clementdoreau 18:45dbd9948c97 9 {
clementdoreau 18:45dbd9948c97 10
clementdoreau 15:3782eb2bc312 11 }
clementdoreau 15:3782eb2bc312 12
Willheisen 40:08490d120ec4 13 // Descritpion: Détecte du bord droit de la matrice
Willheisen 40:08490d120ec4 14 //Entrées: f: pièce à tester, m: matrice à tester
Willheisen 40:08490d120ec4 15 // Sortie : booléen
Willheisen 40:08490d120ec4 16 // False : Pas de collision
Willheisen 40:08490d120ec4 17 // True Collision
clementdoreau 18:45dbd9948c97 18 bool cCollision::bordDroit(cForme &f)
clementdoreau 18:45dbd9948c97 19 {
clementdoreau 18:45dbd9948c97 20 for(unsigned char j = 0; j < 4; j++) { // On parcourt les leds
clementdoreau 18:45dbd9948c97 21 if(f.getLed(j).getPositionX() == 7) { // Pour chaque led, si elle est en bout de colonne (droite)
clementdoreau 15:3782eb2bc312 22 return true; // COLLISION PRESENTE
clementdoreau 15:3782eb2bc312 23 }
clementdoreau 18:45dbd9948c97 24 }
clementdoreau 15:3782eb2bc312 25 return false; // PAS DE COLLISION
clementdoreau 15:3782eb2bc312 26 }
clementdoreau 15:3782eb2bc312 27
Willheisen 40:08490d120ec4 28 // Descritpion: Détecte du bord gauche de la matrice
Willheisen 40:08490d120ec4 29 //Entrées: f: pièce à tester, m: matrice à tester
Willheisen 40:08490d120ec4 30 // Sortie : booléen
Willheisen 40:08490d120ec4 31 // False : Pas de collision
Willheisen 40:08490d120ec4 32 // True Collision
clementdoreau 18:45dbd9948c97 33 bool cCollision::bordGauche(cForme &f)
clementdoreau 18:45dbd9948c97 34 {
clementdoreau 18:45dbd9948c97 35 for(unsigned char j = 0; j < 4; j++) { // On parcourt les leds
clementdoreau 18:45dbd9948c97 36 if(f.getLed(j).getPositionX() == 0) { // Pour chaque led, si elle est en bout de colonne (gauche)
clementdoreau 15:3782eb2bc312 37 return true; // COLLISION PRESENTE
clementdoreau 15:3782eb2bc312 38 }
clementdoreau 18:45dbd9948c97 39 }
clementdoreau 15:3782eb2bc312 40 return false; // PAS DE COLLISION
clementdoreau 15:3782eb2bc312 41 }
clementdoreau 15:3782eb2bc312 42
Willheisen 40:08490d120ec4 43 // Descritpion: Détecte du bas de la matrice
Willheisen 40:08490d120ec4 44 //Entrées: f: pièce à tester, m: matrice à tester
Willheisen 40:08490d120ec4 45 // Sortie : booléen
Willheisen 40:08490d120ec4 46 // False : Pas de collision
Willheisen 40:08490d120ec4 47 // True Collision
clementdoreau 18:45dbd9948c97 48 bool cCollision::bordBas(cForme &f, cMatrice &m)
clementdoreau 18:45dbd9948c97 49 {
clementdoreau 17:e03163d4e367 50 bool res = false;
clementdoreau 18:45dbd9948c97 51 for(unsigned char j = 0; j < 4; j++) { // On parcourt les leds
clementdoreau 18:45dbd9948c97 52 if(f.getLed(j).getPositionY() == m.getLig() - 1) { // Pour chaque led, si elle est en bout de colonne (Bas)
clementdoreau 17:e03163d4e367 53 res = true; // COLLISION PRESENTE
clementdoreau 15:3782eb2bc312 54 }
clementdoreau 18:45dbd9948c97 55 }
clementdoreau 17:e03163d4e367 56 return res; // PAS DE COLLISION
clementdoreau 15:3782eb2bc312 57 }
clementdoreau 15:3782eb2bc312 58
clementdoreau 15:3782eb2bc312 59
Willheisen 40:08490d120ec4 60 // Descritpion: Détection d'une pièce sous la pièce courante
Willheisen 40:08490d120ec4 61 //Entrées: f: pièce à tester, m: matrice à tester
Willheisen 40:08490d120ec4 62 // Sortie : booléen
Willheisen 40:08490d120ec4 63 // False : Pas de collision
Willheisen 40:08490d120ec4 64 // True Collision
clementdoreau 18:45dbd9948c97 65 bool cCollision::pieceBas(cForme &f, cMatrice &m)
clementdoreau 18:45dbd9948c97 66 {
clementdoreau 20:921ffec1acb4 67 unsigned char test = 1;
clementdoreau 18:45dbd9948c97 68 for(unsigned char i = 0; i < 4; i++) {
clementdoreau 20:921ffec1acb4 69 if(m.getValTab(f.getLed(i).getPositionX(), f.getLed(i).getPositionY() + 1) != LED_NOIR) { // SI la led sous la led courante n'est pas noire
clementdoreau 20:921ffec1acb4 70 test = 1;
clementdoreau 20:921ffec1acb4 71 for(unsigned char j = 0; j < 4; j++) {
clementdoreau 20:921ffec1acb4 72 if(f.getLed(i).getPositionY() + 1 == f.getLed(j).getPositionY() && f.getLed(i).getPositionX() == f.getLed(j).getPositionX()) {
clementdoreau 20:921ffec1acb4 73 test = 0;
clementdoreau 18:45dbd9948c97 74 }
clementdoreau 15:3782eb2bc312 75 }
clementdoreau 20:921ffec1acb4 76 if(test == 1) {
clementdoreau 20:921ffec1acb4 77 return true;
clementdoreau 20:921ffec1acb4 78 }
clementdoreau 20:921ffec1acb4 79 }
clementdoreau 20:921ffec1acb4 80 }
clementdoreau 20:921ffec1acb4 81 return false;
clementdoreau 20:921ffec1acb4 82 }
clementdoreau 20:921ffec1acb4 83
Willheisen 40:08490d120ec4 84 // Descritpion: Détection d'une pièce à gauche de la pièce courante
Willheisen 40:08490d120ec4 85 //Entrées: f: pièce à tester, m: matrice à tester
Willheisen 40:08490d120ec4 86 // Sortie : booléen
Willheisen 40:08490d120ec4 87 // False : Pas de collision
Willheisen 40:08490d120ec4 88 // True Collision
clementdoreau 20:921ffec1acb4 89 bool cCollision::pieceGauche( cForme &f, cMatrice &m)
clementdoreau 20:921ffec1acb4 90 {
clementdoreau 20:921ffec1acb4 91 unsigned char test = 1;
clementdoreau 20:921ffec1acb4 92 for(unsigned char i = 0; i < 4; i++) {
clementdoreau 20:921ffec1acb4 93 if(m.getValTab(f.getLed(i).getPositionX() - 1, f.getLed(i).getPositionY()) != LED_NOIR) { // SI la led sous la led courante n'est pas noire
clementdoreau 20:921ffec1acb4 94 test = 1;
clementdoreau 20:921ffec1acb4 95 for(unsigned char j = 0; j < 4; j++) {
clementdoreau 35:7aef0bbdf335 96 if(f.getLed(i).getPositionX() - 1 == f.getLed(j).getPositionX() && f.getLed(i).getPositionY() == f.getLed(j).getPositionY()) {
clementdoreau 20:921ffec1acb4 97 test = 0;
clementdoreau 20:921ffec1acb4 98 }
clementdoreau 20:921ffec1acb4 99 }
clementdoreau 20:921ffec1acb4 100 if(test == 1) {
clementdoreau 20:921ffec1acb4 101 return true;
clementdoreau 20:921ffec1acb4 102 }
clementdoreau 15:3782eb2bc312 103 }
clementdoreau 15:3782eb2bc312 104 }
clementdoreau 19:9e3551d418d5 105 return false;
clementdoreau 15:3782eb2bc312 106 }
Willheisen 40:08490d120ec4 107
Willheisen 40:08490d120ec4 108 // Descritpion: Détection d'une pièce à droite de la pièce courante
Willheisen 40:08490d120ec4 109 //Entrées: f: pièce à tester, m: matrice à tester
Willheisen 40:08490d120ec4 110 // Sortie : booléen
Willheisen 40:08490d120ec4 111 // False : Pas de collision
Willheisen 40:08490d120ec4 112 // True Collision
clementdoreau 20:921ffec1acb4 113 bool cCollision::pieceDroite(cForme &f, cMatrice &m)
clementdoreau 18:45dbd9948c97 114 {
clementdoreau 20:921ffec1acb4 115 unsigned char test = 1;
clementdoreau 18:45dbd9948c97 116 for(unsigned char i = 0; i < 4; i++) {
Willheisen 40:08490d120ec4 117 if(m.getValTab(f.getLed(i).getPositionX() + 1, f.getLed(i).getPositionY()) != LED_NOIR) { // SI la led sous la led courante n'est pas noire
clementdoreau 20:921ffec1acb4 118 test = 1;
clementdoreau 20:921ffec1acb4 119 for(unsigned char j = 0; j < 4; j++) {
clementdoreau 20:921ffec1acb4 120 if(f.getLed(i).getPositionX() + 1 == f.getLed(j).getPositionX() && f.getLed(i).getPositionY() == f.getLed(j).getPositionY()) {
clementdoreau 20:921ffec1acb4 121 test = 0;
clementdoreau 18:45dbd9948c97 122 }
clementdoreau 15:3782eb2bc312 123 }
clementdoreau 20:921ffec1acb4 124 if(test == 1) {
clementdoreau 20:921ffec1acb4 125 return true;
clementdoreau 18:45dbd9948c97 126 }
clementdoreau 15:3782eb2bc312 127 }
clementdoreau 15:3782eb2bc312 128 }
clementdoreau 20:921ffec1acb4 129 return false;
clementdoreau 15:3782eb2bc312 130 }