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.
Fork of METRIX by
Diff: metrix.cpp
- Revision:
- 2:fc251f89bd1b
- Parent:
- 1:bd308ee8776e
diff -r bd308ee8776e -r fc251f89bd1b metrix.cpp --- a/metrix.cpp Tue Oct 02 17:51:50 2018 +0000 +++ b/metrix.cpp Thu Oct 04 00:48:41 2018 +0000 @@ -35,13 +35,15 @@ void cop_mat(uint8_t a,uint8_t b,uint8_t c,uint8_t* fig,uint8_t columna) { - mat_tmp[0]= *(fig+5)>>columna-1; - mat_tmp[1]= *(fig+a)>>columna-1; //Realiza una copia de la matriz actual fila por fila. - mat_tmp[2]= *(fig+b)>>columna-1; - mat_tmp[3]= *(fig+c)>>columna-1; + if(((mat_act[cont-2]& *(fig+c)>>columna-1)==0)&&((mat_act[cont-1]& *(fig+b)>>columna-1)==0)&&((mat_act[cont]& *(fig+a)>>columna-1)==0)){ + mat_tmp[0]= *(fig+5)>>columna-1; + mat_tmp[1]= *(fig+a)>>columna-1; //Realiza una copia de la matriz actual fila por fila. + mat_tmp[2]= *(fig+b)>>columna-1; + mat_tmp[3]= *(fig+c)>>columna-1; + } } -void borrar() //borrar toda la matriz; +void borrar() //borrar toda la matriz; { int i; for(i=0;i<=8;i++) @@ -74,10 +76,11 @@ } } if(fila>8) - fila=8; - if(fila==0){ - borrar(); - fila=8; + fila=8; + if(fila<=1){ + wait_ms(VEL); + borrar(); + fila=8; } command.printf("\n buscar fila \n %d",fila); command.printf("\n ******************************* \n "); @@ -86,42 +89,58 @@ void guardar_mat(){ mat_act[fila-3]=mat_tmp1[0]; mat_act[fila-2]=mat_tmp1[1]; - mat_act[fila-1]=mat_tmp1[2]; //pasa de 0 a -1 - mat_act[fila]=mat_tmp1[3]; //pasa de +1 a 0 - }; + mat_act[fila-1]=mat_tmp1[2]; + mat_act[fila ]=mat_tmp1[3]; + }; void correr_fig(){ - uint8_t correr=0; - correr=command.getc(); - command.printf("\n4- Correr: %d",correr); + + uint8_t correr=command.getc(); + if(correr==30) //Arriba, voltear figura. correr=1; + if(correr==29) //izquierda, correr la figura. correr=2; + if(correr==28) //Derecha correr la figura. correr=3; + + if(correr==31) //bajar, baja la figura. + correr=0; + switch (correr){ + case 0: - break; //cae la figura; + cont++; + if(cont>8)cont=8; + break; //cae la figura; + case 1: + if( (mat_tmp[1]==2) || (mat_tmp[1]==1)|| (mat_tmp[1]==3)) //faltan condiciones para evitar desplazamiento innecesario. + ncolumna--; grados++; if(grados>4) grados=1; - break; //Girar la figura; + break; //Girar la figura; + case 2: ncolumna++; if(ncolumna>6){ - if(((mat_tmp[2]==3) && (mat_tmp[3]==6)) || (mat_tmp[2]==7) || (mat_tmp[3]==7)) + if(((mat_tmp[2]==3) && (mat_tmp[3]==6)) || (mat_tmp[2]==7) || (mat_tmp[3]==7)) ncolumna=6; + if((mat_tmp[1]==2) &&(mat_tmp[2]==2) && (mat_tmp[3]==2)) + ncolumna=7; } - if(ncolumna>7) - ncolumna=7; - break; //correr a la Derecha; + //if(ncolumna>7) + //ncolumna=7; + break; //correr a la Derecha; + case 3: ncolumna--; if(ncolumna<1) ncolumna=1; - break; //correr a la izquierda; + break; //correr a la izquierda; } } @@ -183,8 +202,18 @@ void fichas(){ ficha= rand() % 5+1; grados= rand() % 4+1; - ncolumna=3; + ncolumna=4; } + +void buscar_linea(){ + for(uint8_t i=0;i<9;i++){ + if(mat_act[i]==255){ + for(uint8_t a=i;a>=1;a--){ + sendSPI(a,mat_act[a-1]); + } + } + } +} int main() { test(); @@ -193,17 +222,13 @@ fichas(); buscar_fil(); cont=0; - while (cont<=fila){ + while (cont<fila){ correr_fig(); dibujar(ficha,grados,ncolumna); buscar_fil(); imp_mat(mat_tmp); - //probador bugs - uint8_t correr=command.getc(); - if(correr==31) //Arriba, voltear figura. - cont++; - command.printf("\n4- Cont: %d",cont); } - guardar_mat(); + buscar_linea(); + guardar_mat(); } } \ No newline at end of file