d

Files at this revision

API Documentation at this revision

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