BastatDoreau / Mbed 2 deprecated MoveYourTetris

Dependencies:   mbed APDS_9960 mbed-rtos

Dependents:   MoveYourTetris_OK

src/cMatrice.cpp

Committer:
Willheisen
Date:
2016-04-24
Revision:
36:f58a566595ad
Parent:
35:7aef0bbdf335
Child:
38:418278e5eb6b

File content as of revision 36:f58a566595ad:

#include "cMatrice.h"
#include <algorithm>

// CONSTRUCTEURS

cMatrice::cMatrice()
{

}

cMatrice::cMatrice(unsigned char c, unsigned char l)
{
    _lig = l;
    _col = c;
    _matrice = new unsigned char*[_lig];
    for(unsigned char i = 0; i < _lig; i++) {
        _matrice[i] = new unsigned char[_col];
    }
    clear();
    /////////////////////////////////////////////////////////
    decalage = 1;
}

// DESTRUCTEUR
cMatrice::~cMatrice()
{
    for(unsigned char i = 0; i < _lig; i++) {
        delete[] _matrice[i];
        delete[] _matrice;
    }
}

// GETTER
unsigned char cMatrice::getValTab(unsigned char l, unsigned char c)
{
    return _matrice[l][c];
}

unsigned char cMatrice::getCol()
{
    return _col;
}

unsigned char cMatrice::getLig()
{
    return _lig;
}

cForme* cMatrice::get_pForme()
{
    return _pForme;
}
// SETTER

void cMatrice::setCol(unsigned char c)
{
    _col = c;
}

void cMatrice::setLig(unsigned char l)
{
    _lig = l;
}
void cMatrice::setValTab(unsigned char l, unsigned char c, unsigned char coul)
{
    _matrice [l][c] = coul;
}

// METHODES

//      Paramètres:
//  f: Forme à afficher
//  c: Couleur
void cMatrice::afficherForme(cForme* f, unsigned char c)
{
    _pForme = f;
    // Changement de couleur des Leds
    for (int i = 0; i < 4; i++) {
        _pForme->getLed(i).setCouleur(c);
        _matrice[_pForme->getLed(i).getPositionX()][_pForme->getLed(i).getPositionY()] = c;
    }
}


//      Description:
//  Nettoyage de la matrice, passage à 0 de la valeur de chaque Led
void cMatrice::clear()
{
    for(unsigned char i = 0; i < _col; i++) {
        for(unsigned char j = 0; j < _lig; j++) {
            _matrice[i][j] = LED_NOIR;
        }
    }
    //////////////////////////////////////////////////////////////////////////////////////
    _matrice[0][0] = LED_ROUGE;
}

void cMatrice::updateMatrice()
{
    // On éteint les leds de la pièce
    for (int i = 0; i < 4; i++) {
        _matrice[_pForme->getLed(i).getOldPositionX()][_pForme->getLed(i).getOldPositionY()] = LED_NOIR;
    }
    // Affichage de la nouvelle position
    afficherForme(_pForme, _pForme->getLed(0).getCouleur());
    ///////////////////////////////////////////////////////////////////////////////////////////////
    // Controle de la collision avec les bords
    ///////////////////////////////////////////////////////////////////////////////////////////////
}

void cMatrice::messageAccueil()
{
    Serial pc (USBTX, USBRX);
    int i, j;
    for(i=0; i<8 ; i++) {
        for(j=0; j<67; j++) {
            matriceMessage[i][j]= LED_NOIR;
        }
    }
    unsigned char coul;
    j=0;
    coul = LED_ROUGE;
    //M
    for(i = 1; i < _col -1; i++) {
        matriceMessage[i][j] = coul;
    }
    j++;
    matriceMessage[5][j] = coul;
    j++;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[5][j] = coul;
    j++;
    for(unsigned char i = 1; i < _col -1; i++) {
        matriceMessage[i][j] = coul;
    }
    j++;
    j++;
    //o
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    j++;
    j++;
    //v
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    j++;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    j++;
    //e
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    matriceMessage[4][j] = coul;
    j++;
    j++;
    coul = LED_VERT;
    //y
    matriceMessage[1][j] = coul;
    matriceMessage[4][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[3][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[3][j] = coul;
    j++;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    j++;
    //o
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    j++;
    j++;
    //u
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    j++;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    j++;
    //r
    matriceMessage[1][j] = coul;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[3][j] = coul;
    j++;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[3][j] = coul;
    j++;
    j++;
    coul = LED_BLEU_FONCE;
    //T
    matriceMessage[6][j] = coul;
    j++;
    matriceMessage[6][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    matriceMessage[5][j] = coul;
    matriceMessage[6][j] = coul;
    j++;
    matriceMessage[6][j] = coul;
    j++;
    matriceMessage[6][j] = coul;
    j++;
    j++;
    //e
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    matriceMessage[4][j] = coul;
    j++;
    j++;
    //t
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[4][j] = coul;
    j++;
    j++;
    //r
    matriceMessage[1][j] = coul;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[3][j] = coul;
    j++;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[3][j] = coul;
    j++;
    j++;
    //i
    matriceMessage[1][j] = coul;
    matriceMessage[2][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    j++;
    //s
    matriceMessage[1][j] = coul;
    matriceMessage[4][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    matriceMessage[1][j] = coul;
    matriceMessage[3][j] = coul;
    matriceMessage[5][j] = coul;
    j++;
    matriceMessage[2][j] = coul;
    matriceMessage[5][j] = coul;
    pc.printf("j=%d\n", j);
    for(i=6; i>0 ; i--) {
        for(int k=0; k<=j; k++) {
            if(matriceMessage[i][k]) {
                pc.printf("X");
            } else {
                pc.printf(" ");
            }
        }
        pc.printf("\n");
    }
    for(unsigned char i = 0; i < _col; i++) {
        for(unsigned char j = 0; j < _lig; j++) {
            _matrice[i][j] = matriceMessage[i][j];
        }
    }
}

void cMatrice::decalerMatrice()
{
    Serial pc (USBTX, USBRX);
    int i, j;
    for(unsigned char i = 0; i < _col; i++) {
        for(unsigned char j = 0; j < _lig; j++) {
            _matrice[i][j] = matriceMessage[i][j+decalage];
        }
    }
    decalage++;
}