d
Revision 1:bb64b6783fa9, committed 2017-03-30
- Comitter:
- Taliarte
- Date:
- Thu Mar 30 07:22:59 2017 +0000
- Parent:
- 0:31b36057b213
- Commit message:
- First;
Changed in this revision
Matrice.cpp | Show annotated file Show diff for this revision Revisions of this file |
Matrice.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 31b36057b213 -r bb64b6783fa9 Matrice.cpp --- a/Matrice.cpp Sun Mar 12 13:34:59 2017 +0000 +++ b/Matrice.cpp Thu Mar 30 07:22:59 2017 +0000 @@ -1,21 +1,116 @@ #include "Matrice.h" -Matrice ::~Matrice(void){ +Matrice ::~Matrice(){ if (_spi) delete _spi; // destruction de l'objet SPI if (_cs) delete _cs; + // delete les carres while matrice } -Matrice::Matrice(void) +Matrice::Matrice() { _spi=NULL; _cs=NULL; state=false; + for ( int i =0; i<=64;i++) + { + buffer[i]= 0x00; + } + +for (int row = 0; row <= 3; row++) + { + for (int col=0; col <= 3; col++) + { + matrice1[row][col]=NULL; + } + } } Matrice::Matrice(SPI * spi,DigitalOut *cs ){ // Constructeur avec la liason SPI + for ( int i =0; i<=64;i++) + { + buffer[i]= 0x00; + } + +for (int row = 0; row <= 3; row++) + { + for (int col=0; col <= 3; col++) + { + matrice1[row][col]=NULL; + } + } beginSPI(spi, cs); + } + + void Matrice::ajoutCarre(char x, char y, int couleur) +{ + if (x<=3 || y<=3) + { + if ( matrice1[x][y]) delete (matrice1[x][y]); + matrice1[x][y] = new Carre(couleur); + } +} + +void Matrice::supprimerCarre(char x, char y) +{ + if (matrice1[x][y]!=NULL) + { + delete (matrice1[x][y]); + matrice1[x][y] = NULL; + } +} + +void Matrice::setDispo() +{ + for (int row = 0; row <= 3; row++) + { + for (int col=0; col <= 3; col++) + { + if (matrice1 [row][col]==NULL) matricedispo[row][col] = 0; + else matricedispo[row][col] = 1; + } + } + +} + + +void Matrice::ajoutCarreAleatroire() +{ + int y; + int x; + int couleur; + couleur = rand()%1; + +do { + y=rand()%3; + x=rand()%3; + } + while(matrice1[x][y]!= NULL); + + matrice1[x][y] = new Carre(couleur); +} + +void Matrice::matricetobuffer() +{ +int position=0; + +for (int row = 0; row <= 3; row++) + { + for (int col=0; col <= 3; col++) + { + if (matrice1[row][col]!=NULL) + { + ajoutCarretobuffer(position,matrice1[row][col]->getCouleur()) ; + } + position=position+1; + } + } + + +} + + void Matrice::beginSPI( SPI * spi, DigitalOut *cs){ state=false; if (_spi) delete _spi; // on verifie qu'une liason spi n'existe pas déja @@ -32,9 +127,9 @@ } -void Matrice::ecrireMatrice( char * buffer) +void Matrice::ecrireMatrice() { - + matricetobuffer(); if (state == true) { // Select the device by seting chip select low @@ -49,6 +144,128 @@ wait_ms(1); // Remontee de CS/ _cs->write(1); - } + } +} + +void Matrice::ajoutCarretobuffer (int position,int couleur) +{ + switch(position) { + case 0 : + // dessin du carre + buffer[0]= couleur; + buffer[1]= couleur; + buffer[8]= couleur; + buffer[9]= couleur; + break; + case 1 : + buffer[2]= couleur; + buffer[3]= couleur; + buffer[10]= couleur; + buffer[11]= couleur; + break; + + case 2 : + buffer[4]= couleur; + buffer[5]= couleur; + buffer[12]= couleur; + buffer[13]= couleur; + break; + + case 3 : + buffer[6]= couleur; + buffer[7]= couleur; + buffer[14]= couleur; + buffer[15]= couleur; + break; + + case 4 : + buffer[16]= couleur; + buffer[17]= couleur; + buffer[24]= couleur; + buffer[25]= couleur; + break; + case 5 : + buffer[18]= couleur; + buffer[19]= couleur; + buffer[26]= couleur; + buffer[27]= couleur; + break; + + case 6 : + buffer[20]= couleur; + buffer[21]= couleur; + buffer[28]= couleur; + buffer[29]= couleur; + break; + + case 7 : + buffer[22]= couleur; + buffer[23]= couleur; + buffer[30]= couleur; + buffer[31]= couleur; + break; + + case 8 : + buffer[32]= couleur; + buffer[33]= couleur; + buffer[40]= couleur; + buffer[41]= couleur; + break; -} \ No newline at end of file + + case 9 : + buffer[34]= couleur; + buffer[35]= couleur; + buffer[42]= couleur; + buffer[43]= couleur; + break; + + + + case 10 : + buffer[36]= couleur; + buffer[37]= couleur; + buffer[44]= couleur; + buffer[45]= couleur; + break; + + + case 11 : + buffer[38]= couleur; + buffer[39]= couleur; + buffer[46]= couleur; + buffer[47]= couleur; + break; + + case 12 : + buffer[48]= couleur; + buffer[49]= couleur; + buffer[56]= couleur; + buffer[57]= couleur; + break; + + case 13 : + buffer[50]= couleur; + buffer[51]= couleur; + buffer[58]= couleur; + buffer[59]= couleur; + break; + + case 14 : + buffer[52]= couleur; + buffer[53]= couleur; + buffer[60]= couleur; + buffer[61]= couleur; + break; + + case 15 : + buffer[54]= couleur; + buffer[55]= couleur; + buffer[62]= couleur; + buffer[63]= couleur; + break; + + } + + +}
diff -r 31b36057b213 -r bb64b6783fa9 Matrice.h --- a/Matrice.h Sun Mar 12 13:34:59 2017 +0000 +++ b/Matrice.h Thu Mar 30 07:22:59 2017 +0000 @@ -1,21 +1,35 @@ #include "mbed.h" - +#include "Carre.h" class Matrice { public: void beginSPI(SPI *spi, DigitalOut *cs); // fonction permetant de démarer le SPI - bool getState( void ){return state;} // Fonction retoutnant l'état du bus + bool getState( void ){return state;} // Fonction retoutnant l'état du bus + void ecrireMatrice(); // Ecris la matrice a partir d'un buffer de 64 - void ecrireMatrice(char * buffer); // Ecris la matrice a partir d'un buffer de 64 + //Gestion Jeu + void setDispo(); + void ajoutCarre(char x,char y,int couleur); + void supprimerCarre(char x, char y); + void ajoutCarreAleatroire(); - + //Constructeurs Matrice(); // Constructeur par défaut Matrice(SPI *spi, DigitalOut *cs); // constructeur avec la liason SPI il es donc nécessaire d'intancier la liason SPI ( new SPI(p6...)) a l'appel ~Matrice(); private: - SPI *_spi; +// atributs + SPI *_spi; DigitalOut *_cs; bool state; + + int buffer [64]; + void ajoutCarretobuffer(int position, int couleur); + void matricetobuffer(); + // + char matricedispo[4][4]; + Carre* matrice1[4][4]; + }; \ No newline at end of file