Projet_S3

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
nmonnier
Date:
Sat Mar 26 14:58:31 2022 +0000
Parent:
13:ae981a954016
Commit message:
Last version

Changed in this revision

char.h Show annotated file Show diff for this revision Revisions of this file
draw.h Show annotated file Show diff for this revision Revisions of this file
serie.h Show annotated file Show diff for this revision Revisions of this file
--- a/char.h	Fri Feb 04 09:51:52 2022 +0000
+++ b/char.h	Sat Mar 26 14:58:31 2022 +0000
@@ -1,3 +1,35 @@
+void brik(int X, int Y, int vie){
+    int i, j;
+    int couleur[3];
+    if(vie>0){
+        switch(vie){
+            case 2:
+                couleur[0]=0;couleur[1]=0;couleur[2]=5;
+                break;
+            case 1:
+                couleur[0]=0;couleur[1]=5;couleur[2]=0;
+                break;
+            case 3:
+                couleur[0]=5;couleur[1]=0;couleur[2]=0;
+                break;
+        }
+        for(i=0;i<4;i++){
+            for(j=0;j<2;j++){
+                pix(X+i,Y+j,couleur[0],couleur[1],couleur[2]);
+            }
+        }
+    }
+}
+
+void raquette(int X, int Y){
+    int i, j;
+    for(i=0;i<8;i++){
+        for(j=0;j<2;j++){
+            pix(X+i,Y+j,2,2,2);
+        }
+    }
+}
+
 void octahedron(int X, int Y, char qR, char qV, char qB){
     pix(X,Y-5,qR,qV,qB);
     
@@ -647,7 +679,187 @@
         pix( px+ 2  , py + 6 , 0 , 0 , 0 ); 
         pix( px+ 3  , py + 6 , 0 , 0 , 0 ); 
         pix( px+ 4  , py + 6 , 0 , 0 , 0 );
-       }        
+       }     
+       
+       if ( ch == 'L' )
+       {
+        pix( px+ 0  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 0 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 0 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 0 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 0 , 0 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 1 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 1 , 0 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 2 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 2 , 0 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 3 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 3 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 3 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 3 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 3 , 0 , 0 , 0 );
+        
+        pix( px+ 0  , py + 4 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 4 , 0 , 0 , 0 );
+        
+        pix( px+ 0  , py + 5 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 5 , 0 , 0 , 0 );
+        
+        pix( px+ 0  , py + 6 , 0 , 0 , 0 ); 
+        pix( px+ 1  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 2  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 3  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 4  , py + 6 , 5 , 0 , 0 );
+       }
+       
+       if ( ch == 'O' )
+       {
+        pix( px+ 0  , py + 0 , 0 , 0 , 0 ); 
+        pix( px+ 1  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 2  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 3  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 4  , py + 0 , 0 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 1 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 1 , 5 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 2 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 2 , 5 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 3 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 3 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 3 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 3 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 3 , 5 , 0 , 0 );
+    
+        pix( px+ 0  , py + 4 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 4 , 5 , 0 , 0 );
+        
+        pix( px+ 0  , py + 5 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 5 , 5 , 0 , 0 );
+        
+        pix( px+ 0  , py + 6 , 0 , 0 , 0 ); 
+        pix( px+ 1  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 2  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 3  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 4  , py + 6 , 0 , 0 , 0 );
+       }  
+       
+       if ( ch == 'S' )
+       {
+        pix( px+ 0  , py + 0 , 0 , 0 , 0 ); 
+        pix( px+ 1  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 2  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 3  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 4  , py + 0 , 0 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 1 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 1 , 5 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 1  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 2 , 5 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 3 , 0 , 0 , 0 ); 
+        pix( px+ 1  , py + 3 , 5 , 0 , 0 ); 
+        pix( px+ 2  , py + 3 , 5 , 0 , 0 ); 
+        pix( px+ 3  , py + 3 , 5 , 0 , 0 ); 
+        pix( px+ 4  , py + 3 , 0 , 0 , 0 );
+        
+        pix( px+ 0  , py + 4 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 4 , 0 , 0 , 0 );
+        
+        pix( px+ 0  , py + 5 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 5 , 5 , 0 , 0 );
+        
+        pix( px+ 0  , py + 6 , 0 , 0 , 0 ); 
+        pix( px+ 1  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 2  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 3  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 4  , py + 6 , 0 , 0 , 0 );
+       }
+       
+       if ( ch == 'E' )
+       {
+        pix( px+ 0  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 2  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 3  , py + 0 , 5 , 0 , 0 ); 
+        pix( px+ 4  , py + 0 , 5 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 1 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 1 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 1 , 0 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 2 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 2 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 2 , 0 , 0 , 0 ); 
+        
+        pix( px+ 0  , py + 3 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 3 , 5 , 0 , 0 ); 
+        pix( px+ 2  , py + 3 , 5 , 0 , 0 ); 
+        pix( px+ 3  , py + 3 , 5 , 0 , 0 ); 
+        pix( px+ 4  , py + 3 , 5 , 0 , 0 );
+        
+        pix( px+ 0  , py + 4 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 4 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 4 , 0 , 0 , 0 );
+        
+        pix( px+ 0  , py + 5 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 2  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 3  , py + 5 , 0 , 0 , 0 ); 
+        pix( px+ 4  , py + 5 , 0 , 0 , 0 );
+        
+        pix( px+ 0  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 1  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 2  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 3  , py + 6 , 5 , 0 , 0 ); 
+        pix( px+ 4  , py + 6 , 5 , 0 , 0 );
+       }
     }
   
 
--- a/draw.h	Fri Feb 04 09:51:52 2022 +0000
+++ b/draw.h	Sat Mar 26 14:58:31 2022 +0000
@@ -7,32 +7,188 @@
     }
 
 
-int delay;
+int delay=0;
 static char entrer=0;
+static char selection=0;
 int tempo=0;
+unsigned int brique[8][8];
+int posX=15,posY=25;
+int i,j;
+int bas=0,droite=0;
+int Lose=0;
 
 void draw()   // ici vous exprimez vos dessins (jamais de delai dans cette boucle)
   { // DEBUT  de vos dessins 
-  tempo=tempo--;
-  if(tempo<0){
-      tempo=0;
-      entrer=0;
+  
+  if(selection=='o'){
+      pix(-ccx+15,-ccy+15,5,0,0);
+      serie.printf("D%dX ",ccx+15);
+      serie.printf("D%dY ",ccy+15);
+      tempo=tempo--;
+      if(tempo<0){
+          tempo=0;
+          entrer=0;
+      }
+      if(tempo>0){
+          switch(entrer){
+            case 'a':
+                charr(16,16,1);
+                break;
+            case 'b':
+                charr(16,16,2);
+                break;
+            case 'c':
+                charr(16,16,3);
+                break;
+            case 'z':
+                charr(16,16,0);
+                break;
+          }
+      }
   }
-  switch(entrer){
-      case 'a':
-        charr(15,15,1);
-        break;
-      case 'b':
-        charr(15,15,2);
-        break;
-      case 'c':
-        charr(15,15,3);
-        break;
-      case 'z':
-        charr(15,15,0);
-        break;
+  if(selection=='q'){
+      if(entrer=='r'){
+            bas=0;
+            Lose=0;
+            posX=15;
+            posY=25;
+            for(i=0;i<8;i++){
+              for(j=0;j<8;j++){
+                 brique[j][i]=rand()%4;
+                serie.printf("D%dH ",i);
+                serie.printf("D%dV ",j);
+                serie.printf("D%dC ",brique[j][i]);      
+              }
+            }
+            entrer='p';
+      }
+      if(entrer=='p'){
+          delay++;
+          if(delay>5)
+            delay=0;
+          for(i=0;i<8;i++){
+            for(j=0;j<8;j++){
+                brik(j*4,i*2,brique[j][i]);
+            }
+          }
+          raquette(-ccx+11,28);
+          pix(posX,posY,3,0,3);
+          if(bas==1 && delay==5)
+            posY++;
+          if(bas==0 && delay==5)
+            posY--;
+          if(droite==1 && delay==5)
+            posX++;
+          if(droite==0 && delay==5)
+            posX--;
+          if(posX<=0){
+            droite=1;
+          }
+          if(posX>=31){
+            droite=0;
+          }
+          if(posY<=0){
+            bas=1;
+          }
+          if(posY<=15&& delay==5){
+                if(brique[posX/4][posY/2]>=1){
+                    if(bas==1)
+                        bas=0;
+                    if(droite==1)
+                        droite=0;
+                    brique[posX/4][posY/2]--;
+                    serie.printf("D%dH ",posY/2);
+                    serie.printf("D%dV ",posX/4);
+                    serie.printf("D%dC ",brique[posX/4][posY/2]); 
+                }
+                if(brique[(posX-3)/4][posY/2]>=1){
+                    if(bas==1)
+                        bas=0;
+                    if(droite==0)
+                        droite=1;
+                    brique[(posX-3)/4][posY/2]--;
+                    serie.printf("D%dH ",posY/2);
+                    serie.printf("D%dV ",(posX-3)/4);
+                    serie.printf("D%dC ",brique[(posX-3)/4][posY/2]); 
+                }
+                if(brique[(posX-2)/4][posY/2]>=1){
+                    if(bas==1)
+                        bas=0;
+                    brique[(posX-2)/4][posY/2]--;
+                    serie.printf("D%dH ",posY/2);
+                    serie.printf("D%dV ",(posX-2)/4);
+                    serie.printf("D%dC ",brique[(posX-2)/4][posY/2]); 
+                }
+                if(brique[(posX-1)/4][posY/2]>=1){
+                    if(bas==0)
+                        bas=1;
+                    brique[(posX-1)/4][posY/2]--;
+                    serie.printf("D%dH ",posY/2);
+                    serie.printf("D%dV ",(posX-1)/4);
+                    serie.printf("D%dC ",brique[(posX-1)/4][posY/2]); 
+                }
+                if(brique[posX/4][(posY-1)/2]>=1){
+                    if(bas==0)
+                        bas=1;
+                    if(droite==1)
+                        droite=0;
+                    brique[posX/4][(posY-1)/2]--;
+                    serie.printf("D%dH ",(posY-1)/2);
+                    serie.printf("D%dV ",posX/4);
+                    serie.printf("D%dC ",brique[posX/4][(posY-1)/2]); 
+                }
+                if(brique[(posX-3)/4][(posY-1)/2]>=1){
+                    if(bas==0)
+                        bas=1;
+                    if(droite==0)
+                        droite=1;
+                    brique[(posX-3)/4][(posY-1)/2]--;
+                    serie.printf("D%dH ",(posY-1)/2);
+                    serie.printf("D%dV ",(posX-3)/4);
+                    serie.printf("D%dC ",brique[(posX-3)/4][(posY-1)/2]); 
+                }
+                if(brique[(posX-2)/4][(posY-1)/2]>=1){
+                    if(bas==0)
+                        bas=1;
+                    brique[(posX-2)/4][(posY-1)/2]--;
+                    serie.printf("D%dH ",(posY-1)/2);
+                    serie.printf("D%dV ",(posX-2)/4);
+                    serie.printf("D%dC ",brique[(posX-2)/4][(posY-1)/2]); 
+                }
+                if(brique[(posX-1)/4][(posY-1)/2]>=1){
+                    if(bas==0)
+                        bas=1;
+                    brique[(posX-1)/4][(posY-1)/2]--;
+                    serie.printf("D%dH ",(posY-1)/2);
+                    serie.printf("D%dV ",(posX-1)/4);
+                    serie.printf("D%dC ",brique[(posX-1)/4][(posY-1)/2]); 
+                }
+                   
+            }
+          if(posY>=28 && posY<=29  && posX>-ccx+11 && posX<-ccx+11+7)
+            bas=0;
+          if(posY>=31){
+              entrer=0;
+              for(i=0;i<8;i++){
+                for(j=0;j<8;j++){
+                    if(brique[j][i]>0)
+                        Lose++;   
+                }
+              }
+              if(Lose==0){
+                serie.printf("D%dW ",0);
+              }
+              if(Lose>0){
+                serie.printf("D%dL ",0);
+                charr(0,19,'L');
+                charr(7,19,'O');
+                charr(7*2,19,'S');
+                charr(7*3,19,'E');
+              }
+          }
+          serie.printf("D%dX ",31-posX);   
+          serie.printf("D%dY ",31-posY);   
+          serie.printf("D%dR ",ccx+11); 
+      }
   }
-  pix(-ccx+15,-ccy+15,5,0,0);
-  serie.printf("D%dX ",ccx+15);
-  serie.printf("D%dY ",ccy+15);
 } 
\ No newline at end of file
--- a/serie.h	Fri Feb 04 09:51:52 2022 +0000
+++ b/serie.h	Sat Mar 26 14:58:31 2022 +0000
@@ -5,22 +5,19 @@
  {  // ici on decode un exemple simple 
     // un 'a' met posx = 10  un  'b' met  posx = 20 
    arecv =  serie.getc();
-   tempo=500;
-   if (arecv == 'a') // c'est  un 'a' qui arrive
-      { 
-        entrer='a';  // affichage de 1    
-      }
-   if (arecv == 'b')// c'est  un 'b' qui arrive
-      { 
-        entrer=arecv; // affichage de 2
-      }   
-   if (arecv == 'c')// c'est  un 'c' qui arrive
-      { 
-        entrer=arecv; // affichage de 3
-      }  
-   if (arecv == 'z')// c'est  un 'z' qui arrive
-      { 
-        entrer=arecv; // affichage de 0
-      }    
+   switch(arecv){
+    case 'o':
+    case 'q':
+        selection=arecv;
+        break;
+    case 'a':
+    case 'b':
+    case 'c':
+    case 'z':
+    case 'r':
+        tempo=500;
+        entrer=arecv;
+        break;
+   }
    return;
  }
\ No newline at end of file