Brahian Stiv Sanchez Giraldo / Mbed 2 deprecated tetrispon

Dependencies:   mbed

Committer:
sanchezzbrahian
Date:
Sun Nov 18 04:56:35 2018 +0000
Revision:
3:8a8ff76e84bc
Parent:
2:15facba8b8b4
tetri y pinpo;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cristianvillarraga 1:ebfb091d5b63 1 #include "mbed.h"
cristianvillarraga 1:ebfb091d5b63 2 #ifndef funcion_matriz
cristianvillarraga 1:ebfb091d5b63 3 #define funcion_matriz
cristianvillarraga 1:ebfb091d5b63 4 #define MAXDAT 3
cristianvillarraga 1:ebfb091d5b63 5
cristianvillarraga 1:ebfb091d5b63 6 Serial pc(USBTX,USBRX);//conexion por puerto USB
cristianvillarraga 1:ebfb091d5b63 7
cristianvillarraga 1:ebfb091d5b63 8 uint8_t mat_act[11]={0,0,0,0,0,0,0,0,0,0,0}; //Matriz para mostrar en pantalla.
cristianvillarraga 1:ebfb091d5b63 9 uint8_t mat_tmp[8]={0,0,0,0,0,0,0,0};
cristianvillarraga 1:ebfb091d5b63 10 uint8_t mat_tmp1[8]={0,0,0,0,0,0,0,0}; //Matriz temporal de las fichas.
cristianvillarraga 1:ebfb091d5b63 11 uint8_t dat[MAXDAT]={0,0,0};
cristianvillarraga 2:15facba8b8b4 12 uint8_t fila=0,save=0,cont=0,num=0,grad=0,mcol=0,i;
cristianvillarraga 1:ebfb091d5b63 13
cristianvillarraga 2:15facba8b8b4 14 void imp_mat(uint8_t *temp)
cristianvillarraga 1:ebfb091d5b63 15 {
cristianvillarraga 1:ebfb091d5b63 16 sendSPI(cont-3,mat_act[cont-3]);
cristianvillarraga 1:ebfb091d5b63 17 sendSPI(cont-2,(*(temp+0) | mat_act[cont-2]));
cristianvillarraga 1:ebfb091d5b63 18 sendSPI(cont-1,(*(temp+1) | mat_act[cont-1]));
cristianvillarraga 1:ebfb091d5b63 19 sendSPI(cont,(*(temp+2) | mat_act[cont]));
cristianvillarraga 1:ebfb091d5b63 20 }
cristianvillarraga 1:ebfb091d5b63 21 uint32_t read_command() //ingresa "<",">" y define el tamaño del vector "dat"
cristianvillarraga 1:ebfb091d5b63 22 {
cristianvillarraga 1:ebfb091d5b63 23 char intc=pc.getc();
cristianvillarraga 1:ebfb091d5b63 24 while(intc != '<')
cristianvillarraga 1:ebfb091d5b63 25 intc=pc.getc();
cristianvillarraga 1:ebfb091d5b63 26 for (int i =0;i<MAXDAT;i++)
cristianvillarraga 1:ebfb091d5b63 27 dat[i]=pc.getc();
cristianvillarraga 1:ebfb091d5b63 28 intc=pc.getc();
cristianvillarraga 1:ebfb091d5b63 29 if(intc != '>'){
cristianvillarraga 1:ebfb091d5b63 30 return 0;
cristianvillarraga 1:ebfb091d5b63 31 }
cristianvillarraga 1:ebfb091d5b63 32 return 1;
cristianvillarraga 1:ebfb091d5b63 33 }
cristianvillarraga 1:ebfb091d5b63 34 void cop_fi (uint8_t* tfig) //Almacena la figura en la matriz temporal
cristianvillarraga 1:ebfb091d5b63 35 {
cristianvillarraga 2:15facba8b8b4 36 for(int i=0;i<8;i++)
cristianvillarraga 1:ebfb091d5b63 37 {
cristianvillarraga 1:ebfb091d5b63 38 mat_tmp[i]=*(tfig+i)>>dat[1]-1;
cristianvillarraga 1:ebfb091d5b63 39
cristianvillarraga 1:ebfb091d5b63 40 }
cristianvillarraga 2:15facba8b8b4 41 for(int i=0;i<8;i++)
cristianvillarraga 1:ebfb091d5b63 42 {
cristianvillarraga 1:ebfb091d5b63 43 mat_tmp1[i]= mat_tmp[i];
cristianvillarraga 1:ebfb091d5b63 44 }
cristianvillarraga 1:ebfb091d5b63 45 }
cristianvillarraga 1:ebfb091d5b63 46 void ingred_d() //Tipo de figuras
cristianvillarraga 1:ebfb091d5b63 47 {
cristianvillarraga 1:ebfb091d5b63 48 uint8_t tf=dat[0];
cristianvillarraga 1:ebfb091d5b63 49
cristianvillarraga 1:ebfb091d5b63 50 switch(tf)
cristianvillarraga 1:ebfb091d5b63 51 {
cristianvillarraga 1:ebfb091d5b63 52 case tipo_c: // Cuadrado
cristianvillarraga 1:ebfb091d5b63 53 cop_fi(FIG_C);
cristianvillarraga 1:ebfb091d5b63 54 break;
cristianvillarraga 1:ebfb091d5b63 55 case tipo_s: //S
cristianvillarraga 1:ebfb091d5b63 56 cop_fi(FIG_S);
cristianvillarraga 1:ebfb091d5b63 57 break;
cristianvillarraga 1:ebfb091d5b63 58 case tipo_t: //T
cristianvillarraga 1:ebfb091d5b63 59 cop_fi(FIG_T);
cristianvillarraga 1:ebfb091d5b63 60 break;
cristianvillarraga 1:ebfb091d5b63 61 case tipo_i: //I
cristianvillarraga 1:ebfb091d5b63 62 cop_fi(FIG_I);
cristianvillarraga 1:ebfb091d5b63 63 break;
cristianvillarraga 1:ebfb091d5b63 64 case tipo_l: //L
cristianvillarraga 1:ebfb091d5b63 65 cop_fi(FIG_L);
cristianvillarraga 1:ebfb091d5b63 66 break;
cristianvillarraga 1:ebfb091d5b63 67
cristianvillarraga 1:ebfb091d5b63 68 }
cristianvillarraga 1:ebfb091d5b63 69 }
cristianvillarraga 2:15facba8b8b4 70
cristianvillarraga 1:ebfb091d5b63 71 void mover_fig()//mueve la figura por medio de botones
cristianvillarraga 1:ebfb091d5b63 72 {
cristianvillarraga 2:15facba8b8b4 73 analogo();
sanchezzbrahian 3:8a8ff76e84bc 74
sanchezzbrahian 3:8a8ff76e84bc 75
sanchezzbrahian 3:8a8ff76e84bc 76 if(mx<0.1)
sanchezzbrahian 3:8a8ff76e84bc 77 {
sanchezzbrahian 3:8a8ff76e84bc 78 int temp1 = mat_tmp[i+1]&(0x01);
sanchezzbrahian 3:8a8ff76e84bc 79 if(temp1==0)
sanchezzbrahian 3:8a8ff76e84bc 80 {
sanchezzbrahian 3:8a8ff76e84bc 81 for(int i=0;i<7;i++)
sanchezzbrahian 3:8a8ff76e84bc 82 {
sanchezzbrahian 3:8a8ff76e84bc 83 mat_tmp[i]=mat_tmp[i]>>1;
sanchezzbrahian 3:8a8ff76e84bc 84 }
sanchezzbrahian 3:8a8ff76e84bc 85 }
sanchezzbrahian 3:8a8ff76e84bc 86 } //mover figura a la derecha
sanchezzbrahian 3:8a8ff76e84bc 87
sanchezzbrahian 3:8a8ff76e84bc 88 if(mx>0.9)
sanchezzbrahian 3:8a8ff76e84bc 89 {
sanchezzbrahian 3:8a8ff76e84bc 90 int temp2 = mat_tmp[i+2]&(0x80);
sanchezzbrahian 3:8a8ff76e84bc 91 if(temp2==0)
sanchezzbrahian 3:8a8ff76e84bc 92 {
sanchezzbrahian 3:8a8ff76e84bc 93 for(int i=0;i<7;i++)
sanchezzbrahian 3:8a8ff76e84bc 94 {
sanchezzbrahian 3:8a8ff76e84bc 95 mat_tmp[i]=mat_tmp[i]<<1;
sanchezzbrahian 3:8a8ff76e84bc 96 }
sanchezzbrahian 3:8a8ff76e84bc 97 }//mover figura a la izquierda
sanchezzbrahian 3:8a8ff76e84bc 98 }
sanchezzbrahian 3:8a8ff76e84bc 99 }
sanchezzbrahian 3:8a8ff76e84bc 100
sanchezzbrahian 3:8a8ff76e84bc 101 void rotar_fig()
sanchezzbrahian 3:8a8ff76e84bc 102 {
sanchezzbrahian 3:8a8ff76e84bc 103 analogo();
sanchezzbrahian 3:8a8ff76e84bc 104 if(my>0.6)
cristianvillarraga 1:ebfb091d5b63 105 {
cristianvillarraga 1:ebfb091d5b63 106 grad++;
cristianvillarraga 2:15facba8b8b4 107 if(grad<5)
cristianvillarraga 2:15facba8b8b4 108 {
cristianvillarraga 2:15facba8b8b4 109 switch (grad)
cristianvillarraga 2:15facba8b8b4 110 {
cristianvillarraga 1:ebfb091d5b63 111 case 1:
cristianvillarraga 1:ebfb091d5b63 112 mat_tmp[0]=mat_tmp1[4];
cristianvillarraga 1:ebfb091d5b63 113 mat_tmp[1]=mat_tmp1[5];
cristianvillarraga 1:ebfb091d5b63 114 mat_tmp[2]=mat_tmp1[6];
cristianvillarraga 1:ebfb091d5b63 115 break;
cristianvillarraga 1:ebfb091d5b63 116 case 2:
cristianvillarraga 1:ebfb091d5b63 117 mat_tmp[0]=mat_tmp1[0];
cristianvillarraga 1:ebfb091d5b63 118 mat_tmp[1]=mat_tmp1[2];
cristianvillarraga 1:ebfb091d5b63 119 mat_tmp[2]=mat_tmp1[1];
cristianvillarraga 1:ebfb091d5b63 120 break;
cristianvillarraga 1:ebfb091d5b63 121 case 3:
cristianvillarraga 1:ebfb091d5b63 122 mat_tmp[0]=mat_tmp1[6];
cristianvillarraga 1:ebfb091d5b63 123 mat_tmp[1]=mat_tmp1[5];
cristianvillarraga 1:ebfb091d5b63 124 mat_tmp[2]=mat_tmp1[4];
cristianvillarraga 1:ebfb091d5b63 125 break;
cristianvillarraga 1:ebfb091d5b63 126 case 4:
cristianvillarraga 1:ebfb091d5b63 127 mat_tmp[0]=mat_tmp1[0];
cristianvillarraga 1:ebfb091d5b63 128 mat_tmp[1]=mat_tmp1[1];
cristianvillarraga 1:ebfb091d5b63 129 mat_tmp[2]=mat_tmp1[2];
cristianvillarraga 1:ebfb091d5b63 130 break;
cristianvillarraga 2:15facba8b8b4 131 }
cristianvillarraga 1:ebfb091d5b63 132 }
cristianvillarraga 2:15facba8b8b4 133 if(grad>4)
cristianvillarraga 2:15facba8b8b4 134 {
cristianvillarraga 1:ebfb091d5b63 135 grad=0;
cristianvillarraga 1:ebfb091d5b63 136 }
sanchezzbrahian 3:8a8ff76e84bc 137 }
sanchezzbrahian 3:8a8ff76e84bc 138 }
sanchezzbrahian 3:8a8ff76e84bc 139
sanchezzbrahian 3:8a8ff76e84bc 140 void act_matrix(uint8_t*temp)//Evalua figura guardada y su espacio
sanchezzbrahian 3:8a8ff76e84bc 141 {
sanchezzbrahian 3:8a8ff76e84bc 142 for (int i=0;i<9;i++)
sanchezzbrahian 3:8a8ff76e84bc 143 {
sanchezzbrahian 3:8a8ff76e84bc 144 save=*(temp+2)& mat_act[i];
sanchezzbrahian 3:8a8ff76e84bc 145 if (save==0 )
cristianvillarraga 2:15facba8b8b4 146 {
sanchezzbrahian 3:8a8ff76e84bc 147 fila=i+1;
sanchezzbrahian 3:8a8ff76e84bc 148 }
sanchezzbrahian 3:8a8ff76e84bc 149 if (save!=0)
sanchezzbrahian 3:8a8ff76e84bc 150 {
sanchezzbrahian 3:8a8ff76e84bc 151 fila=i;
sanchezzbrahian 3:8a8ff76e84bc 152 i=9;
sanchezzbrahian 3:8a8ff76e84bc 153 }
sanchezzbrahian 3:8a8ff76e84bc 154 }
sanchezzbrahian 3:8a8ff76e84bc 155
cristianvillarraga 1:ebfb091d5b63 156 }
cristianvillarraga 1:ebfb091d5b63 157
cristianvillarraga 1:ebfb091d5b63 158 void guardar_mat(uint8_t *temp)//guarda la matriz
cristianvillarraga 1:ebfb091d5b63 159 {
cristianvillarraga 1:ebfb091d5b63 160 mat_act[fila-3]=(*(temp+0))| mat_act[fila-3];
cristianvillarraga 1:ebfb091d5b63 161 mat_act[fila-2]=(*(temp+1))| mat_act[fila-2];
cristianvillarraga 1:ebfb091d5b63 162 mat_act[fila-1]=(*(temp+2))| mat_act[fila-1];
sanchezzbrahian 3:8a8ff76e84bc 163
cristianvillarraga 1:ebfb091d5b63 164 };
sanchezzbrahian 3:8a8ff76e84bc 165 void most_fail()
sanchezzbrahian 3:8a8ff76e84bc 166 {
sanchezzbrahian 3:8a8ff76e84bc 167
sanchezzbrahian 3:8a8ff76e84bc 168 if(j+1==7){
sanchezzbrahian 3:8a8ff76e84bc 169 mat_act[i] = 0x00;
sanchezzbrahian 3:8a8ff76e84bc 170 mat_act[i+1] = 0x00;}
sanchezzbrahian 3:8a8ff76e84bc 171
sanchezzbrahian 3:8a8ff76e84bc 172
sanchezzbrahian 3:8a8ff76e84bc 173 }
cristianvillarraga 1:ebfb091d5b63 174 void elim_lin()
cristianvillarraga 1:ebfb091d5b63 175 {
sanchezzbrahian 3:8a8ff76e84bc 176 for(i=0;i<9;i++){
cristianvillarraga 1:ebfb091d5b63 177 if(mat_act[i]==255){
cristianvillarraga 1:ebfb091d5b63 178 for(uint8_t a=i;a>=1;a--){
cristianvillarraga 1:ebfb091d5b63 179 sendSPI(a,mat_act[a-1]);
cristianvillarraga 1:ebfb091d5b63 180 mat_act[a]=mat_act[a-1];
cristianvillarraga 1:ebfb091d5b63 181 }
cristianvillarraga 1:ebfb091d5b63 182 }
cristianvillarraga 1:ebfb091d5b63 183 }
cristianvillarraga 1:ebfb091d5b63 184 }
cristianvillarraga 1:ebfb091d5b63 185 #endif