BastatDoreau / Mbed 2 deprecated MoveYourTetris

Dependencies:   mbed APDS_9960 mbed-rtos

Dependents:   MoveYourTetris_OK

Revision:
12:7afdbc7465ac
Parent:
8:92d0c4961a16
Child:
29:95469b25e187
diff -r c37922a0a915 -r 7afdbc7465ac src/cTe.cpp
--- a/src/cTe.cpp	Sun Apr 10 17:46:03 2016 +0000
+++ b/src/cTe.cpp	Sun Apr 10 20:51:02 2016 +0000
@@ -2,45 +2,129 @@
 
 #include "cTe.h"
 
-cTe::cTe() {
-	// 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 + 2);
-	_Leds[2].setPositionY(_positionY);
-	_Leds[3].setPositionX(_positionX + 1);
-	_Leds[3].setPositionY(_positionY + 1);
-
+cTe::cTe()
+{
+    // 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 + 1);
+    _Leds[2].setPositionY(_positionY);
+    _Leds[3].setPositionX(_positionX);
+    _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 = 3;
 }
 
-cTe::cTe(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 + 2);
-	_Leds[2].setPositionY(_positionY);
-	_Leds[3].setPositionX(_positionX + 1);
-	_Leds[3].setPositionY(_positionY + 1);
+cTe::cTe(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 + 1);
+    _Leds[2].setPositionY(_positionY);
+    _Leds[3].setPositionX(_positionX);
+    _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 = 3;
 
 }
 
 
-void cTe::rotationHoraire() {
+void cTe::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|
+            //    |3|1|
+            //      |2|
+            _Leds[0].setPositionX(_positionX);
+            _Leds[0].setPositionY(_positionY - 1);
+            _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);
+            _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 - 1);
+            _Leds[2].setPositionY(_positionY);
+            _Leds[3].setPositionX(_positionX);
+            _Leds[3].setPositionY(_positionY - 1);
+            _orientation = 3;
+            break;
+        case 3:
+            // Positionnement des leds
+            //  |2|
+            //  |1|3|
+            //  |0|
+            _Leds[0].setPositionX(_positionX);
+            _Leds[0].setPositionY(_positionY + 1);
+            _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);
+            _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 + 1);
+            _Leds[2].setPositionY(_positionY);
+            _Leds[3].setPositionX(_positionX);
+            _Leds[3].setPositionY(_positionY + 1);
+            _orientation = 1;
+            break;
+        default:
+            break;
+    }
 }