Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
funcion_matriz.h
- Committer:
- cristianvillarraga
- Date:
- 2018-11-17
- Revision:
- 1:ebfb091d5b63
- Child:
- 2:15facba8b8b4
File content as of revision 1:ebfb091d5b63:
#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