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.
Dependencies: mbed
Fork of METRIX_2 by
Diff: metrix.cpp
- Revision:
- 2:fc251f89bd1b
- Parent:
- 1:bd308ee8776e
- Child:
- 3:7ae3dd76ba0a
--- 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
