Mini projet LOO

Dependencies:   mbed APDS_9960 mbed-rtos

Dependents:   MoveYourTetris_OK

Home du projet

src/cLigne.cpp

Committer:
Willheisen
Date:
2016-04-24
Revision:
40:08490d120ec4
Parent:
18:45dbd9948c97
Child:
29:95469b25e187

File content as of revision 40:08490d120ec4:

// Définition de la classe Ligne

#include "cLigne.h"

cLigne::cLigne() {
	// 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 + 2);
	_Leds[3].setPositionY(_positionY);
	    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 = 0;
}

cLigne::cLigne(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);
	_Leds[0].setPositionY(_positionY);
	_Leds[1].setPositionX(_positionX + 1);
	_Leds[1].setPositionY(_positionY);
	_Leds[2].setPositionX(_positionX + 2);
	_Leds[2].setPositionY(_positionY);
	_Leds[3].setPositionX(_positionX + 3);
	_Leds[3].setPositionY(_positionY);
	    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 = 0;
}


void cLigne::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|
            //   |1|
            //   |2|
            //	 |3|
            _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);
            _Leds[3].setPositionY(_positionY + 2);
            _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 - 2);
            _Leds[3].setPositionY(_positionY);
            _orientation = 3;
            break;
        case 3:
            // Positionnement des leds
            //  |3|
            //  |2|
            //  |1|
            //  |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);
            _Leds[3].setPositionY(_positionY - 2);
            _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 + 2);
            _Leds[3].setPositionY(_positionY);
            _orientation = 1;
            break;
        default:
            break;
    }
}