TETRIS FINAL

Dependencies:   mbed

Committer:
djinn77
Date:
Fri Nov 16 01:16:46 2018 +0000
Revision:
0:f15eccb70d1d
Child:
1:f9ff8e1c3244
TETRIS FINAL

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djinn77 0:f15eccb70d1d 1 #include "mbed.h"
djinn77 0:f15eccb70d1d 2 #include "piezas.h"
djinn77 0:f15eccb70d1d 3 //#define DEBUG 1
djinn77 0:f15eccb70d1d 4
djinn77 0:f15eccb70d1d 5 //Establecimiento de la comunicacion
djinn77 0:f15eccb70d1d 6 Serial pc(USBTX,USBRX);
djinn77 0:f15eccb70d1d 7 SPI deviceM(PB_5, PB_4, PB_3); // D4(gris), Ninguno, D3(azul)
djinn77 0:f15eccb70d1d 8 //SPI deviceM(PB_15, PB_14, PB_13);
djinn77 0:f15eccb70d1d 9 DigitalOut ssel (PA_4); // A2(morado)
djinn77 0:f15eccb70d1d 10 //DigitalOut ssel (PB_12);
djinn77 0:f15eccb70d1d 11
djinn77 0:f15eccb70d1d 12 //Delcaracion de botones
djinn77 0:f15eccb70d1d 13
djinn77 0:f15eccb70d1d 14 // InterruptIn pulsador_izq(A5);
djinn77 0:f15eccb70d1d 15 // InterruptIn pulsador_der(A4);
djinn77 0:f15eccb70d1d 16 // DigitalIn p_giro(A3);
djinn77 0:f15eccb70d1d 17 // DigitalIn obligar_bajar(A0);
djinn77 0:f15eccb70d1d 18
djinn77 0:f15eccb70d1d 19 // Definiendo Botones
djinn77 0:f15eccb70d1d 20
djinn77 0:f15eccb70d1d 21 AnalogIn vry(A3); // Lee el eje x del jostick
djinn77 0:f15eccb70d1d 22 AnalogIn vrx(A4); // Lee el eje y del jostick
djinn77 0:f15eccb70d1d 23 DigitalIn sw(A5); // Lee el boton del jostick
djinn77 0:f15eccb70d1d 24
djinn77 0:f15eccb70d1d 25 //Declaracion de funciones
djinn77 0:f15eccb70d1d 26 void inicializar();
djinn77 0:f15eccb70d1d 27 void sendSPI(uint8_t d1, uint8_t d2);
djinn77 0:f15eccb70d1d 28 void captura_datos();
djinn77 0:f15eccb70d1d 29 void read();
djinn77 0:f15eccb70d1d 30 void desplazar();
djinn77 0:f15eccb70d1d 31 void captura_matriz();
djinn77 0:f15eccb70d1d 32 void desplazar_izq();
djinn77 0:f15eccb70d1d 33 void desplazar_der();
djinn77 0:f15eccb70d1d 34 void perder();
djinn77 0:f15eccb70d1d 35 uint16_t* girar(uint16_t* pieza, int posicion);
djinn77 0:f15eccb70d1d 36 // Declaracion de variables
djinn77 0:f15eccb70d1d 37 int8_t posicion= 0, figura= 0, giro= 0;
djinn77 0:f15eccb70d1d 38 uint16_t memoria[8]={0};
djinn77 0:f15eccb70d1d 39 uint16_t* imprimir;
djinn77 0:f15eccb70d1d 40 uint16_t *borde=0;
djinn77 0:f15eccb70d1d 41 int8_t corrimiento=0;
djinn77 0:f15eccb70d1d 42 float meas_vx;
djinn77 0:f15eccb70d1d 43 float meas_vy;
djinn77 0:f15eccb70d1d 44
djinn77 0:f15eccb70d1d 45 // Delcaraion de limites
djinn77 0:f15eccb70d1d 46 int8_t liminf=0, limizq=0, limder=0;
djinn77 0:f15eccb70d1d 47 // Habilitadores
djinn77 0:f15eccb70d1d 48 int enableizq=1;
djinn77 0:f15eccb70d1d 49 int enableder=1;
djinn77 0:f15eccb70d1d 50 int bajando=1;
djinn77 0:f15eccb70d1d 51
djinn77 0:f15eccb70d1d 52 void debuging(char*s,...){
djinn77 0:f15eccb70d1d 53
djinn77 0:f15eccb70d1d 54 #if DEBUG
djinn77 0:f15eccb70d1d 55 pc.printf(s);
djinn77 0:f15eccb70d1d 56 #endif
djinn77 0:f15eccb70d1d 57
djinn77 0:f15eccb70d1d 58 }
djinn77 0:f15eccb70d1d 59
djinn77 0:f15eccb70d1d 60 // FUNCION EL CUAL ENVIA EL DATO JUNTO CON LA DIRECCION DE LA COLUMNA CORRESPONDIENTE AL PRIMER DISPOSITIVO
djinn77 0:f15eccb70d1d 61 void sendSPI(uint8_t d1, uint8_t d2)
djinn77 0:f15eccb70d1d 62 {
djinn77 0:f15eccb70d1d 63 deviceM.unlock();
djinn77 0:f15eccb70d1d 64 ssel=0; // SELECCIONA EL PRIMER DISPOSOTIVO
djinn77 0:f15eccb70d1d 65 deviceM.write(d1); // ESCRIBE EL ADDRESS
djinn77 0:f15eccb70d1d 66 deviceM.write(d2); // ESCRIBE EL DATA
djinn77 0:f15eccb70d1d 67 ssel=1;
djinn77 0:f15eccb70d1d 68 deviceM.lock();
djinn77 0:f15eccb70d1d 69 };
djinn77 0:f15eccb70d1d 70
djinn77 0:f15eccb70d1d 71
djinn77 0:f15eccb70d1d 72 int main() {
djinn77 0:f15eccb70d1d 73 inicializar(); // Inicializa el programa para establecer los modos de trabajo liminosidad
djinn77 0:f15eccb70d1d 74 while(1){
djinn77 0:f15eccb70d1d 75 captura_datos(); // Inicia la lectura de la informacion
djinn77 0:f15eccb70d1d 76 perder();
djinn77 0:f15eccb70d1d 77 }
djinn77 0:f15eccb70d1d 78 }
djinn77 0:f15eccb70d1d 79
djinn77 0:f15eccb70d1d 80 void captura_datos(){
djinn77 0:f15eccb70d1d 81
djinn77 0:f15eccb70d1d 82 pc.baud(38400); //Inicializa la velocidad de comunicacion
djinn77 0:f15eccb70d1d 83 /*//-----------------------------------------
djinn77 0:f15eccb70d1d 84 char inicio=0,final=0;
djinn77 0:f15eccb70d1d 85 figura=0;
djinn77 0:f15eccb70d1d 86 giro=0;
djinn77 0:f15eccb70d1d 87 posicion=0;
djinn77 0:f15eccb70d1d 88
djinn77 0:f15eccb70d1d 89 debuging("\n Ingrese el inicio del comando. ");
djinn77 0:f15eccb70d1d 90 inicio=pc.getc();
djinn77 0:f15eccb70d1d 91 debuging("\n Ingrese la Figura. ");
djinn77 0:f15eccb70d1d 92 figura=pc.getc();
djinn77 0:f15eccb70d1d 93 debuging("\n Seleccione el giro. ");
djinn77 0:f15eccb70d1d 94 giro=pc.getc();
djinn77 0:f15eccb70d1d 95 debuging("\n Seleccione la posicion. ");
djinn77 0:f15eccb70d1d 96 posicion=pc.getc();
djinn77 0:f15eccb70d1d 97 debuging("\n Ingrese el final del comando. ");
djinn77 0:f15eccb70d1d 98 final=pc.getc();
djinn77 0:f15eccb70d1d 99
djinn77 0:f15eccb70d1d 100
djinn77 0:f15eccb70d1d 101 if(inicio!= '<' || final != '>'){
djinn77 0:f15eccb70d1d 102
djinn77 0:f15eccb70d1d 103 debuging("\n Error en el comando.");
djinn77 0:f15eccb70d1d 104
djinn77 0:f15eccb70d1d 105 }else{
djinn77 0:f15eccb70d1d 106
djinn77 0:f15eccb70d1d 107 read();
djinn77 0:f15eccb70d1d 108
djinn77 0:f15eccb70d1d 109 }
djinn77 0:f15eccb70d1d 110 */
djinn77 0:f15eccb70d1d 111
djinn77 0:f15eccb70d1d 112 ///*--------------------figuras con random------------------
djinn77 0:f15eccb70d1d 113 figura=0;
djinn77 0:f15eccb70d1d 114 giro=0;
djinn77 0:f15eccb70d1d 115 figura=rand()%5;
djinn77 0:f15eccb70d1d 116 giro=rand()%5;
djinn77 0:f15eccb70d1d 117 posicion=rand()%6;;
djinn77 0:f15eccb70d1d 118 read();
djinn77 0:f15eccb70d1d 119 //*/--------------------------------------------------------
djinn77 0:f15eccb70d1d 120
djinn77 0:f15eccb70d1d 121
djinn77 0:f15eccb70d1d 122
djinn77 0:f15eccb70d1d 123
djinn77 0:f15eccb70d1d 124 }
djinn77 0:f15eccb70d1d 125
djinn77 0:f15eccb70d1d 126 void inicializar(){ //INICIALIZA LA MATRIZ
djinn77 0:f15eccb70d1d 127
djinn77 0:f15eccb70d1d 128 sendSPI(0x0c,1);
djinn77 0:f15eccb70d1d 129 sendSPI(0x0b,7);
djinn77 0:f15eccb70d1d 130 sendSPI(0x09,0);
djinn77 0:f15eccb70d1d 131 sendSPI(0x0A,0x00); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
djinn77 0:f15eccb70d1d 132 int i;
djinn77 0:f15eccb70d1d 133 for (i=0;i<2;i++){
djinn77 0:f15eccb70d1d 134 sendSPI(0x0F,1);
djinn77 0:f15eccb70d1d 135 wait (0.5);
djinn77 0:f15eccb70d1d 136 sendSPI(0x0f,0);
djinn77 0:f15eccb70d1d 137 wait (0.5);
djinn77 0:f15eccb70d1d 138 }
djinn77 0:f15eccb70d1d 139
djinn77 0:f15eccb70d1d 140 for (int j= 1; j<=8;j++){ // limpia la pantalla al encenderce o reiniarcea asi
djinn77 0:f15eccb70d1d 141 //no quedan leds encendidos cuando se ejecute el programa nuevamente
djinn77 0:f15eccb70d1d 142
djinn77 0:f15eccb70d1d 143 sendSPI(j, 0x00); //pone cada columna y vecto en blanco al inicializar
djinn77 0:f15eccb70d1d 144 }
djinn77 0:f15eccb70d1d 145 }
djinn77 0:f15eccb70d1d 146
djinn77 0:f15eccb70d1d 147 void read(){
djinn77 0:f15eccb70d1d 148
djinn77 0:f15eccb70d1d 149 switch(figura){ //Este switch escoje la figura con que trabajaar
djinn77 0:f15eccb70d1d 150 case 0: // L
djinn77 0:f15eccb70d1d 151 if(giro == 0)
djinn77 0:f15eccb70d1d 152 imprimir = PZA_L,liminf=7, limizq=6, limder=0;
djinn77 0:f15eccb70d1d 153 if(giro == 1)
djinn77 0:f15eccb70d1d 154 imprimir = PZA_LDN,liminf=7, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 155 if(giro == 2)
djinn77 0:f15eccb70d1d 156 imprimir = PZA_LDO,liminf=7, limizq=5, limder=-1;
djinn77 0:f15eccb70d1d 157 if(giro == 3)
djinn77 0:f15eccb70d1d 158 imprimir = PZA_LDD,liminf=8, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 159 break;
djinn77 0:f15eccb70d1d 160 case 1://T
djinn77 0:f15eccb70d1d 161 if(giro == 0)
djinn77 0:f15eccb70d1d 162 imprimir = PZA_T,liminf=8, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 163 if(giro == 1)
djinn77 0:f15eccb70d1d 164 imprimir = PZA_TN,liminf=7, limizq=6, limder=0;
djinn77 0:f15eccb70d1d 165 if(giro == 2)
djinn77 0:f15eccb70d1d 166 imprimir = PZA_TO,liminf=7, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 167 if(giro == 3)
djinn77 0:f15eccb70d1d 168 imprimir = PZA_TD,liminf=7, limizq=5, limder=-1;
djinn77 0:f15eccb70d1d 169 break;
djinn77 0:f15eccb70d1d 170 case 2://I
djinn77 0:f15eccb70d1d 171 if(giro == 0 || giro == 2)
djinn77 0:f15eccb70d1d 172 imprimir = PZA_I,liminf=7, limizq=6, limder=-1;
djinn77 0:f15eccb70d1d 173 if(giro == 1 || giro == 3)
djinn77 0:f15eccb70d1d 174 imprimir = PZA_IR,liminf=8, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 175 break;
djinn77 0:f15eccb70d1d 176 case 3://Cuadrado
djinn77 0:f15eccb70d1d 177 if(giro == 0 || giro == 1 || giro == 2 || giro == 3)
djinn77 0:f15eccb70d1d 178 imprimir = PZA_C,liminf=8, limizq=6, limder=0;
djinn77 0:f15eccb70d1d 179 break;
djinn77 0:f15eccb70d1d 180 case 4:
djinn77 0:f15eccb70d1d 181 if(giro == 0 || giro == 2)
djinn77 0:f15eccb70d1d 182 imprimir = PZA_Z,liminf=8, limizq=5, limder=0;
djinn77 0:f15eccb70d1d 183 if(giro == 1 || giro == 3)
djinn77 0:f15eccb70d1d 184 imprimir = PZA_ZN,liminf=7, limizq=6, limder=0;
djinn77 0:f15eccb70d1d 185 break;
djinn77 0:f15eccb70d1d 186 default:
djinn77 0:f15eccb70d1d 187 imprimir = VACIO;
djinn77 0:f15eccb70d1d 188 break;
djinn77 0:f15eccb70d1d 189 }
djinn77 0:f15eccb70d1d 190 // pc.printf("\n limite inferior read %d\n ",liminf);
djinn77 0:f15eccb70d1d 191 desplazar();
djinn77 0:f15eccb70d1d 192 }
djinn77 0:f15eccb70d1d 193 void desplazar(){
djinn77 0:f15eccb70d1d 194
djinn77 0:f15eccb70d1d 195 uint16_t desplazamiento[8]={0}; // Inicia un vector auxiliar con solo Ceros
djinn77 0:f15eccb70d1d 196 int j= 0;
djinn77 0:f15eccb70d1d 197 for(int i=posicion; i<(posicion+3);i++){ // Inicia un vector auxiliar con solo Ceros
djinn77 0:f15eccb70d1d 198 desplazamiento[i]=imprimir[j]; // Alamcena los nuevos datos tomados en el vector
djinn77 0:f15eccb70d1d 199 j++;
djinn77 0:f15eccb70d1d 200 }
djinn77 0:f15eccb70d1d 201 imprimir=desplazamiento;
djinn77 0:f15eccb70d1d 202 captura_matriz();
djinn77 0:f15eccb70d1d 203 }
djinn77 0:f15eccb70d1d 204
djinn77 0:f15eccb70d1d 205 void captura_matriz(){
djinn77 0:f15eccb70d1d 206
djinn77 0:f15eccb70d1d 207 int i=0; // inicia el contador i en 0
djinn77 0:f15eccb70d1d 208 int enable=1;
djinn77 0:f15eccb70d1d 209 enableizq=1;
djinn77 0:f15eccb70d1d 210 enableder=1;
djinn77 0:f15eccb70d1d 211 bajando=1;
djinn77 0:f15eccb70d1d 212 float velocidad=1.0;
djinn77 0:f15eccb70d1d 213 while(enable){ //se encarga de desplazar los bits dentro del vector
djinn77 0:f15eccb70d1d 214 //pc.printf("\n1- conteo del corriemiento:\n %d",i);
djinn77 0:f15eccb70d1d 215 corrimiento=i;
djinn77 0:f15eccb70d1d 216 int j=1; // inicia el contador j en 1
djinn77 0:f15eccb70d1d 217 while(j<=8){ //se encarga de seleccionar que posicion del vector imprimira
djinn77 0:f15eccb70d1d 218
djinn77 0:f15eccb70d1d 219 sendSPI(j, memoria[j-1]|(imprimir[j-1]>>i)); //Imprime el resultado de aplicar OR a la memoria y al desplamamiento de imprimir
djinn77 0:f15eccb70d1d 220 //wait(0.1); // Activar este wait para pruebas de desplazamiento y captura de los datos
djinn77 0:f15eccb70d1d 221
djinn77 0:f15eccb70d1d 222 if(i==liminf || (memoria[j-1]&(imprimir[j-1]>>i+1))!=0){ //Detiene el desplazamiento cuando los bits tocan fondo,
djinn77 0:f15eccb70d1d 223 enable=0;// desabilitador del ciclo while
djinn77 0:f15eccb70d1d 224 bajando=0;
djinn77 0:f15eccb70d1d 225 for(int k=0; k<8;k++){ // Almacena todos lo datos del vector en la posicion que corrimiento en la memoria
djinn77 0:f15eccb70d1d 226 memoria[k]= memoria[k]|(imprimir[k]>>i);
djinn77 0:f15eccb70d1d 227 }
djinn77 0:f15eccb70d1d 228
djinn77 0:f15eccb70d1d 229 }
djinn77 0:f15eccb70d1d 230 j++;
djinn77 0:f15eccb70d1d 231 }
djinn77 0:f15eccb70d1d 232 wait(velocidad); // espera para tomar el otro valor de lectura
djinn77 0:f15eccb70d1d 233 // ----------------------Lectura del jostick-----------------------------
djinn77 0:f15eccb70d1d 234
djinn77 0:f15eccb70d1d 235 meas_vx = vrx.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje X
djinn77 0:f15eccb70d1d 236 meas_vy = vry.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje Y
djinn77 0:f15eccb70d1d 237
djinn77 0:f15eccb70d1d 238 //------ realiza el corriemiento del vector hacia la izq y der respectivamente.
djinn77 0:f15eccb70d1d 239
djinn77 0:f15eccb70d1d 240 if (meas_vx > 1700 && (posicion < limizq)) // si se cumple esta condicion el jugador se desplaza a la izq
djinn77 0:f15eccb70d1d 241 desplazar_izq();
djinn77 0:f15eccb70d1d 242 else if (meas_vx < 1600 && (posicion > limder)) // si se cumple esta condicion el jugador se desplaza a la der
djinn77 0:f15eccb70d1d 243 desplazar_der();
djinn77 0:f15eccb70d1d 244
djinn77 0:f15eccb70d1d 245
djinn77 0:f15eccb70d1d 246 //-----------------------Giro de la pieza--------------------------------
djinn77 0:f15eccb70d1d 247
djinn77 0:f15eccb70d1d 248 if(meas_vy < 1600){
djinn77 0:f15eccb70d1d 249 giro++;
djinn77 0:f15eccb70d1d 250 if(giro ==4){
djinn77 0:f15eccb70d1d 251 giro=0;
djinn77 0:f15eccb70d1d 252 }
djinn77 0:f15eccb70d1d 253 switch(figura){
djinn77 0:f15eccb70d1d 254 case 0: // L
djinn77 0:f15eccb70d1d 255 if(giro == 0)
djinn77 0:f15eccb70d1d 256 imprimir= girar(PZA_L, posicion),liminf=7, limizq=6, limder=0,i--;
djinn77 0:f15eccb70d1d 257 if(giro == 1)
djinn77 0:f15eccb70d1d 258 imprimir= girar(PZA_LDN, posicion),liminf=7, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 259 if(giro == 2)
djinn77 0:f15eccb70d1d 260 imprimir= girar(PZA_LDO, posicion),liminf=7, limizq=5, limder=-1,i--;
djinn77 0:f15eccb70d1d 261 if(giro == 3)
djinn77 0:f15eccb70d1d 262 imprimir=girar(PZA_LDD, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 263 break;
djinn77 0:f15eccb70d1d 264 case 1://T
djinn77 0:f15eccb70d1d 265 if(giro == 0)
djinn77 0:f15eccb70d1d 266 imprimir= girar(PZA_T, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 267 if(giro == 1)
djinn77 0:f15eccb70d1d 268 imprimir= girar(PZA_TN, posicion),liminf=7, limizq=6, limder=0,i--;
djinn77 0:f15eccb70d1d 269 if(giro == 2)
djinn77 0:f15eccb70d1d 270 imprimir= girar(PZA_TO, posicion),liminf=7, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 271 if(giro == 3)
djinn77 0:f15eccb70d1d 272 imprimir= girar(PZA_TD, posicion),liminf=7, limizq=5, limder=-1,i--;
djinn77 0:f15eccb70d1d 273 break;
djinn77 0:f15eccb70d1d 274 case 2://I
djinn77 0:f15eccb70d1d 275 if(giro == 0 || giro == 2)
djinn77 0:f15eccb70d1d 276 imprimir= girar(PZA_I, posicion),liminf=7, limizq=6, limder=-1,i--;
djinn77 0:f15eccb70d1d 277 if(giro == 1 || giro == 3)
djinn77 0:f15eccb70d1d 278 imprimir=girar(PZA_IR, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 279 break;
djinn77 0:f15eccb70d1d 280 case 3://Cuadrado
djinn77 0:f15eccb70d1d 281 if(giro == 0 || giro == 1 || giro == 2 || giro == 3)
djinn77 0:f15eccb70d1d 282 imprimir= girar(PZA_C, posicion),liminf=8, limizq=6, limder=0,i--;
djinn77 0:f15eccb70d1d 283 break;
djinn77 0:f15eccb70d1d 284 case 4: //Z
djinn77 0:f15eccb70d1d 285 if(giro == 0 || giro == 2)
djinn77 0:f15eccb70d1d 286 imprimir= girar(PZA_Z, posicion),liminf=8, limizq=5, limder=0,i--;
djinn77 0:f15eccb70d1d 287 if(giro == 1 || giro == 3)
djinn77 0:f15eccb70d1d 288 imprimir= girar(PZA_ZN, posicion),liminf=7, limizq=6, limder=0,i--;
djinn77 0:f15eccb70d1d 289 break;
djinn77 0:f15eccb70d1d 290
djinn77 0:f15eccb70d1d 291 }
djinn77 0:f15eccb70d1d 292
djinn77 0:f15eccb70d1d 293 }
djinn77 0:f15eccb70d1d 294
djinn77 0:f15eccb70d1d 295 //---------------------------------------------------------------
djinn77 0:f15eccb70d1d 296 if(meas_vy > 1700){
djinn77 0:f15eccb70d1d 297 velocidad=0.2;
djinn77 0:f15eccb70d1d 298 }
djinn77 0:f15eccb70d1d 299 i++;
djinn77 0:f15eccb70d1d 300 }
djinn77 0:f15eccb70d1d 301
djinn77 0:f15eccb70d1d 302 }
djinn77 0:f15eccb70d1d 303
djinn77 0:f15eccb70d1d 304 void desplazar_izq(){
djinn77 0:f15eccb70d1d 305 posicion++;
djinn77 0:f15eccb70d1d 306
djinn77 0:f15eccb70d1d 307 for(int i=7; i >=0; i--){
djinn77 0:f15eccb70d1d 308 imprimir[i]=imprimir[i-1];
djinn77 0:f15eccb70d1d 309 if(i==0){
djinn77 0:f15eccb70d1d 310 imprimir[i]=0;
djinn77 0:f15eccb70d1d 311 }
djinn77 0:f15eccb70d1d 312 }
djinn77 0:f15eccb70d1d 313 return;
djinn77 0:f15eccb70d1d 314 }
djinn77 0:f15eccb70d1d 315
djinn77 0:f15eccb70d1d 316 void desplazar_der(){
djinn77 0:f15eccb70d1d 317 posicion--;
djinn77 0:f15eccb70d1d 318 for(int i=0; i <8; i++){
djinn77 0:f15eccb70d1d 319 imprimir[i]=imprimir[i+1];
djinn77 0:f15eccb70d1d 320 if(i==7){
djinn77 0:f15eccb70d1d 321 imprimir[i]=0;
djinn77 0:f15eccb70d1d 322 }
djinn77 0:f15eccb70d1d 323 }
djinn77 0:f15eccb70d1d 324 return;
djinn77 0:f15eccb70d1d 325 }
djinn77 0:f15eccb70d1d 326
djinn77 0:f15eccb70d1d 327 uint16_t* girar(uint16_t* pieza, int posicion){
djinn77 0:f15eccb70d1d 328 uint16_t desplazamiento[8]={0};
djinn77 0:f15eccb70d1d 329 int j= 0;
djinn77 0:f15eccb70d1d 330 for(int i=posicion; i<(posicion+3);i++){ // Inicia un vector auxiliar con solo Ceros
djinn77 0:f15eccb70d1d 331 desplazamiento[i]=pieza[j]; // Alamcena los nuevos datos tomados en el vector
djinn77 0:f15eccb70d1d 332 j++;
djinn77 0:f15eccb70d1d 333 }
djinn77 0:f15eccb70d1d 334
djinn77 0:f15eccb70d1d 335 return desplazamiento;
djinn77 0:f15eccb70d1d 336 }
djinn77 0:f15eccb70d1d 337
djinn77 0:f15eccb70d1d 338 void perder(){
djinn77 0:f15eccb70d1d 339 for(int i=0; i<8;i++){ // Almacena todos lo datos del vector en la posicion que corrimiento en la memoria
djinn77 0:f15eccb70d1d 340 borde= &memoria[i];
djinn77 0:f15eccb70d1d 341 if(*borde>255){
djinn77 0:f15eccb70d1d 342 NVIC_SystemReset();
djinn77 0:f15eccb70d1d 343 }
djinn77 0:f15eccb70d1d 344 }
djinn77 0:f15eccb70d1d 345 }