Mini projet LOO

Dependencies:   mbed APDS_9960 mbed-rtos

Dependents:   MoveYourTetris_OK

Home du projet

Revision:
12:7afdbc7465ac
Parent:
8:92d0c4961a16
Child:
29:95469b25e187
--- a/src/cZed.cpp	Sun Apr 10 17:46:03 2016 +0000
+++ b/src/cZed.cpp	Sun Apr 10 20:51:02 2016 +0000
@@ -2,44 +2,127 @@
 
 #include "cZed.h"
 
-cZed::cZed() {
-	// variables à 0
-	_positionX = 0;
-	_positionY = 0;
-	_orientation = 1;
-	// Positionnement des leds
-	// |0|1|
-	//   |2|3|
-	_Leds[0].setPositionX(_positionX);      // Led coin haut gauche
-	_Leds[0].setPositionY(_positionY);     // Led coin haut gauche
-	_Leds[1].setPositionX(_positionX + 1);
-	_Leds[1].setPositionY(_positionY);
-	_Leds[2].setPositionX(_positionX + 1);
-	_Leds[2].setPositionY(_positionY + 1);
-	_Leds[3].setPositionX(_positionX + 2);
-	_Leds[3].setPositionY(_positionY + 1);
+cZed::cZed()
+{
+    // variables à 0
+    _positionX = 0;
+    _positionY = 0;
+    _orientation = 1;
+    // Positionnement des leds
+    // |0|1|
+    //   |2|3|
+    _Leds[0].setPositionX(_positionX - 1);
+    _Leds[0].setPositionY(_positionY);
+    _Leds[1].setPositionX(_positionX);
+    _Leds[1].setPositionY(_positionY);
+    _Leds[2].setPositionX(_positionX);
+    _Leds[2].setPositionY(_positionY + 1);
+    _Leds[3].setPositionX(_positionX + 1);
+    _Leds[3].setPositionY(_positionY + 1);
+    for(unsigned char i = 0; i<4; i++) {
+        _Leds[i].setOldPositionX(_Leds[i].getPositionX());
+    }
+    for(unsigned char i = 0; i<4; i++) {
+        _Leds[i].setOldPositionY(_Leds[i].getPositionY());
+    }
+    _typeForme = 2;
+}
 
+cZed::cZed(unsigned char x, unsigned char y)
+{
+    // variables à 0
+    _positionX = x;
+    _positionY = y;
+    _orientation = 1;
+    // Positionnement des leds
+    // |0|1|
+    //   |2|3|
+    _Leds[0].setPositionX(_positionX - 1);
+    _Leds[0].setPositionY(_positionY);
+    _Leds[1].setPositionX(_positionX);
+    _Leds[1].setPositionY(_positionY);
+    _Leds[2].setPositionX(_positionX);
+    _Leds[2].setPositionY(_positionY + 1);
+    _Leds[3].setPositionX(_positionX + 1);
+    _Leds[3].setPositionY(_positionY + 1);
+    for(unsigned char i = 0; i<4; i++) {
+        _Leds[i].setOldPositionX(_Leds[i].getPositionX());
+    }
+    for(unsigned char i = 0; i<4; i++) {
+        _Leds[i].setOldPositionY(_Leds[i].getPositionY());
+    }
+    _typeForme = 2;
 }
 
-cZed::cZed(unsigned char x, unsigned char y) {
-	// variables à 0
-	_positionX = x;
-	_positionY = y;
-	_orientation = 1;
-	// Positionnement des leds
-	// |0|1|
-	//   |2|3|
-	_Leds[0].setPositionX(_positionX);      // Led coin haut gauche
-	_Leds[0].setPositionY(_positionY);     // Led coin haut gauche
-	_Leds[1].setPositionX(_positionX + 1);
-	_Leds[1].setPositionY(_positionY);
-	_Leds[2].setPositionX(_positionX + 1);
-	_Leds[2].setPositionY(_positionY + 1);
-	_Leds[3].setPositionX(_positionX + 2);
-	_Leds[3].setPositionY(_positionY + 1);
+void cZed::rotationHoraire()
+{
+    // Sauvegarde des anciennes positions
+    for (unsigned char i = 0; i < 4; i++) {
+        _Leds[i].setOldPositionX(_Leds[i].getPositionX());
+        _Leds[i].setOldPositionY(_Leds[i].getPositionY());
+    }
+
+    switch (_orientation) {
+        case 1:
+            // Positionnement des leds
+            //      |0|
+            //    |2|1|
+            //    |3|
+            _Leds[0].setPositionX(_positionX);
+            _Leds[0].setPositionY(_positionY - 1);
+            _Leds[1].setPositionX(_positionX);
+            _Leds[1].setPositionY(_positionY);
+            _Leds[2].setPositionX(_positionX - 1);
+            _Leds[2].setPositionY(_positionY);
+            _Leds[3].setPositionX(_positionX - 1);
+            _Leds[3].setPositionY(_positionY + 1);
+            _orientation = 2;
+            break;
+        case 2:
+            // Positionnement des leds
+            //  |3|2|
+            //    |1|0|
+            _Leds[0].setPositionX(_positionX + 1);
+            _Leds[0].setPositionY(_positionY);
+            _Leds[1].setPositionX(_positionX);
+            _Leds[1].setPositionY(_positionY);
+            _Leds[2].setPositionX(_positionX);
+            _Leds[2].setPositionY(_positionY - 1);
+            _Leds[3].setPositionX(_positionX - 1);
+            _Leds[3].setPositionY(_positionY - 1);
+            _orientation = 3;
+            break;
+        case 3:
+            // Positionnement des leds
+            //    |3|
+            //  |1|2|
+            //  |0|
+            _Leds[0].setPositionX(_positionX);
+            _Leds[0].setPositionY(_positionY + 1);
+            _Leds[1].setPositionX(_positionX);
+            _Leds[1].setPositionY(_positionY);
+            _Leds[2].setPositionX(_positionX + 1);
+            _Leds[2].setPositionY(_positionY);
+            _Leds[3].setPositionX(_positionX + 1);
+            _Leds[3].setPositionY(_positionY - 1);
+            _orientation = 4;
+            break;
+
+        case 4:
+            // Positionnement des leds
+            // |0|1|
+            //   |2|3|
+            _Leds[0].setPositionX(_positionX - 1);
+            _Leds[0].setPositionY(_positionY);
+            _Leds[1].setPositionX(_positionX);
+            _Leds[1].setPositionY(_positionY);
+            _Leds[2].setPositionX(_positionX);
+            _Leds[2].setPositionY(_positionY + 1);
+            _Leds[3].setPositionX(_positionX + 1);
+            _Leds[3].setPositionY(_positionY + 1);
+            _orientation = 1;
+            break;
+        default:
+            break;
+    }
 }
-
-
-void cZed::rotationHoraire() {
-
-}