Brahian Stiv Sanchez Giraldo / Mbed 2 deprecated tetrispon

Dependencies:   mbed

Revision:
1:ebfb091d5b63
Child:
2:15facba8b8b4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/funcion_matriz.h	Sat Nov 17 02:16:21 2018 +0000
@@ -0,0 +1,191 @@
+#include "mbed.h"
+#ifndef funcion_matriz
+#define funcion_matriz
+#define MAXDAT 3
+
+Serial pc(USBTX,USBRX);//conexion por puerto USB
+
+uint8_t mat_act[11]={0,0,0,0,0,0,0,0,0,0,0};    //Matriz para mostrar en pantalla.
+uint8_t mat_tmp[8]={0,0,0,0,0,0,0,0};
+uint8_t mat_tmp1[8]={0,0,0,0,0,0,0,0};           //Matriz temporal de las fichas.
+uint8_t dat[MAXDAT]={0,0,0};
+uint8_t fila=0,save=0,i=0,cont=0,mcol=0,num=0,grad=0;
+
+void imp_mat(uint8_t *temp)// Hace el desplazamiento hacia abajo de la figura 
+{    
+        sendSPI(cont-3,mat_act[cont-3]);
+        sendSPI(cont-2,(*(temp+0) | mat_act[cont-2]));
+        sendSPI(cont-1,(*(temp+1) | mat_act[cont-1]));
+        sendSPI(cont,(*(temp+2) | mat_act[cont]));   
+}
+uint32_t read_command() //ingresa "<",">" y define el tamaño del vector "dat" 
+{    
+char intc=pc.getc();   
+    while(intc != '<')
+        intc=pc.getc();
+    for (int i =0;i<MAXDAT;i++)
+    dat[i]=pc.getc();
+    intc=pc.getc();
+    if(intc != '>'){
+        return 0;
+        }
+    return 1;
+}    
+void cop_fi (uint8_t* tfig) //Almacena la figura en la matriz temporal 
+{
+    for(i=0;i<8;i++)
+    {
+    mat_tmp[i]=*(tfig+i)>>dat[1]-1;
+    
+    }
+for(i=0;i<8;i++)
+{
+     mat_tmp1[i]= mat_tmp[i];
+    }
+}
+void d_ale()
+  {
+      num=rand()%5+1;
+      mcol=4;
+      }
+void ingred_d() //Tipo de figuras
+{
+uint8_t  tf=dat[0];
+       
+  switch(tf)
+    {
+      case tipo_c: // Cuadrado
+      cop_fi(FIG_C);
+      break;
+      case tipo_s: //S
+      cop_fi(FIG_S);
+      break;
+      case tipo_t: //T
+      cop_fi(FIG_T);
+      break;
+      case tipo_i: //I
+      cop_fi(FIG_I);
+      break;
+      case tipo_l: //L
+      cop_fi(FIG_L);
+      break;
+     
+    }
+  }
+  void analogoo()
+  {
+      mx=vrx.read();
+      msx=mx*3300;
+      my=vry.read();
+      msy=my*3300;
+      printf("Datosx = %f",msx);
+  }
+  void mover_fig()//mueve la figura por medio de botones 
+{
+    analogoo();
+    int mfig;
+   
+    if(msx>1800){
+    mfig=1;}
+    if(msy<300){//mover figura a la derecha
+    mfig=2;}
+    if(msy>3000){//mover figura a la izquierda
+    mfig=3;}
+    
+    switch(mfig)
+    {
+        case 1:
+        grad++;
+        if(grad<5){
+        
+        switch (grad)
+        {
+            case 1:
+            mat_tmp[0]=mat_tmp1[4];
+            mat_tmp[1]=mat_tmp1[5];
+            mat_tmp[2]=mat_tmp1[6];
+            break;
+            case 2:
+            mat_tmp[0]=mat_tmp1[0];
+            mat_tmp[1]=mat_tmp1[2];
+            mat_tmp[2]=mat_tmp1[1];
+            break;
+            case 3:
+            mat_tmp[0]=mat_tmp1[6];
+            mat_tmp[1]=mat_tmp1[5];
+            mat_tmp[2]=mat_tmp1[4];
+            break;
+            case 4:
+            mat_tmp[0]=mat_tmp1[0];
+            mat_tmp[1]=mat_tmp1[1];
+            mat_tmp[2]=mat_tmp1[2];
+            break;
+        }
+        }
+        if(grad>4){
+            grad=0;
+            }
+        break;
+        case 2:
+      int temp1 = mat_tmp[i]&(0x01); 
+                if(temp1==0)
+                {
+       for(i=0;i<3;i++)
+        {
+           mat_tmp[i]=mat_tmp[i]>>1; //mover derecha
+           
+        }
+        for(i=0;i<7;i++){
+            mat_tmp1[i]=mat_tmp1[i]>>1;
+            }
+       }
+        break;
+        case 3:
+        int temp2 = mat_tmp[i]&(0x80); 
+                if(temp2==0)
+                {
+       for(i=0;i<7;i++){
+            mat_tmp1[i]=mat_tmp1[i]<<1;
+            } 
+        for(i=0;i<3;i++)
+        {
+           mat_tmp[i]=mat_tmp[i]<<1; //mover izquierda
+        }
+        }
+        break;
+}
+}
+void act_matrix(uint8_t*  temp)//Evalua figura guardada y su espacio
+{ 
+      for (i=0;i<9;i++){
+        save=*(temp+2)& mat_act[i];
+        if (save==0 )
+        {
+            fila=i+1;
+        }
+        if (save!=0)
+        {
+            fila=i;                                  
+        i=9;
+        }
+        }
+}
+ 
+void guardar_mat(uint8_t *temp)//guarda la matriz
+{
+        mat_act[fila-3]=(*(temp+0))| mat_act[fila-3];
+        mat_act[fila-2]=(*(temp+1))| mat_act[fila-2];
+        mat_act[fila-1]=(*(temp+2))| mat_act[fila-1];
+};
+void elim_lin()
+{
+    for(i=0;i<9;i++){
+        if(mat_act[i]==255){
+            for(uint8_t a=i;a>=1;a--){
+                sendSPI(a,mat_act[a-1]);
+                mat_act[a]=mat_act[a-1];
+                }
+            }
+        }
+}
+#endif 
\ No newline at end of file