Mini projet LOO
Dependencies: mbed APDS_9960 mbed-rtos
Home du projet
src/cCollision.cpp@40:08490d120ec4, 2016-04-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |