alis

Dependencies:   mbed

Committer:
OnacSerdna
Date:
Mon Nov 26 14:20:12 2018 +0000
Revision:
6:0e75e91820f3
Parent:
5:63e225628634
ok2;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
acastiblancoc 3:c9c3a56609f9 1 #include "mbed.h"
acastiblancoc 3:c9c3a56609f9 2 #include "figs.h"
acastiblancoc 3:c9c3a56609f9 3
acastiblancoc 4:6f2a8091f2a0 4 Ticker bajar;
OnacSerdna 6:0e75e91820f3 5 Ticker cambi;
OnacSerdna 6:0e75e91820f3 6 Ticker dere;
OnacSerdna 6:0e75e91820f3 7 Ticker izqui;
acastiblancoc 3:c9c3a56609f9 8 SPI deviceM(PB_15, PB_14, PB_13);
acastiblancoc 3:c9c3a56609f9 9 DigitalOut ssel (PB_12);
acastiblancoc 4:6f2a8091f2a0 10 Serial command(USBTX,USBRX);
acastiblancoc 4:6f2a8091f2a0 11 AnalogIn joy(A0);
acastiblancoc 4:6f2a8091f2a0 12 AnalogIn joy1(A1);
acastiblancoc 4:6f2a8091f2a0 13 float vx=0;
acastiblancoc 4:6f2a8091f2a0 14 float vy=0;
acastiblancoc 4:6f2a8091f2a0 15 DigitalIn cambio(PB_8);
acastiblancoc 5:63e225628634 16 int cc=0, punto=1;
acastiblancoc 4:6f2a8091f2a0 17 uint8_t movimiento=0;
acastiblancoc 3:c9c3a56609f9 18
acastiblancoc 5:63e225628634 19 float VEL= 500;
acastiblancoc 3:c9c3a56609f9 20
acastiblancoc 4:6f2a8091f2a0 21 uint8_t matrix_act [11]={0,0,0,0,0,0,0,0,0,0,0};
acastiblancoc 4:6f2a8091f2a0 22 uint8_t matrix_temp [8]={0,0,0,0,0,0,0,0};
acastiblancoc 4:6f2a8091f2a0 23 uint8_t matrix_temp1[8]={0,0,0,0,0,0,0,0};
acastiblancoc 4:6f2a8091f2a0 24 uint8_t fila=1,cont=0,columna=1,rotacion=1,figura=0;
acastiblancoc 3:c9c3a56609f9 25
acastiblancoc 3:c9c3a56609f9 26 void sendSPI(uint8_t d1, uint8_t d2)
acastiblancoc 3:c9c3a56609f9 27 {
acastiblancoc 3:c9c3a56609f9 28 deviceM.unlock();
acastiblancoc 3:c9c3a56609f9 29 ssel=0;
acastiblancoc 3:c9c3a56609f9 30 deviceM.write(d1);
acastiblancoc 3:c9c3a56609f9 31 deviceM.write(d2);
acastiblancoc 3:c9c3a56609f9 32 ssel=1;
acastiblancoc 3:c9c3a56609f9 33 deviceM.lock();
acastiblancoc 3:c9c3a56609f9 34 }
acastiblancoc 3:c9c3a56609f9 35
acastiblancoc 3:c9c3a56609f9 36
acastiblancoc 3:c9c3a56609f9 37
acastiblancoc 4:6f2a8091f2a0 38 void init_display()
acastiblancoc 3:c9c3a56609f9 39 {
acastiblancoc 3:c9c3a56609f9 40 sendSPI(0x0c,1);
acastiblancoc 3:c9c3a56609f9 41 sendSPI(0x0b,7);
acastiblancoc 3:c9c3a56609f9 42 sendSPI(0x09,0);
acastiblancoc 3:c9c3a56609f9 43 sendSPI(0x0A,0x0E);
acastiblancoc 3:c9c3a56609f9 44 int j;
acastiblancoc 3:c9c3a56609f9 45 for (j=0;j<4;j++){
acastiblancoc 3:c9c3a56609f9 46 sendSPI(0x0F,1);
acastiblancoc 3:c9c3a56609f9 47 wait (0.2);
acastiblancoc 4:6f2a8091f2a0 48 sendSPI(0x0f,0);
acastiblancoc 3:c9c3a56609f9 49 wait (0.2);
acastiblancoc 4:6f2a8091f2a0 50 }
acastiblancoc 3:c9c3a56609f9 51 }
acastiblancoc 3:c9c3a56609f9 52
acastiblancoc 4:6f2a8091f2a0 53 void copy_matrix(uint8_t a,uint8_t b,uint8_t c,uint8_t* fig,uint8_t columna)
acastiblancoc 3:c9c3a56609f9 54 {
acastiblancoc 4:6f2a8091f2a0 55 if(((matrix_act[cont-2]& *(fig+c)>>columna-1)==0)&&((matrix_act[cont-1]& *(fig+b)>>columna-1)==0)&&((matrix_act[cont]& *(fig+a)>>columna-1)==0)){
acastiblancoc 4:6f2a8091f2a0 56 matrix_temp[0]= *(fig+5)>>columna-1;
acastiblancoc 4:6f2a8091f2a0 57 matrix_temp[1]= *(fig+a)>>columna-1;
acastiblancoc 4:6f2a8091f2a0 58 matrix_temp[2]= *(fig+b)>>columna-1;
acastiblancoc 4:6f2a8091f2a0 59 matrix_temp[3]= *(fig+c)>>columna-1;
acastiblancoc 3:c9c3a56609f9 60 }
acastiblancoc 3:c9c3a56609f9 61 }
acastiblancoc 3:c9c3a56609f9 62
acastiblancoc 3:c9c3a56609f9 63 void borrar()
acastiblancoc 3:c9c3a56609f9 64 {
acastiblancoc 3:c9c3a56609f9 65 int i;
acastiblancoc 3:c9c3a56609f9 66 for(i=0;i<=8;i++)
acastiblancoc 3:c9c3a56609f9 67 {
acastiblancoc 3:c9c3a56609f9 68 sendSPI(i,0);
acastiblancoc 4:6f2a8091f2a0 69 matrix_act[i]=0;
acastiblancoc 3:c9c3a56609f9 70 }
acastiblancoc 3:c9c3a56609f9 71 };
acastiblancoc 3:c9c3a56609f9 72
acastiblancoc 5:63e225628634 73 void game_over()
acastiblancoc 5:63e225628634 74 {
acastiblancoc 5:63e225628634 75 uint8_t go [9]={0,0,0b01000010,0b00100100,0b00011000,0b00100100,0b01000010,0b00000000,0};
acastiblancoc 5:63e225628634 76 int k,n;
acastiblancoc 5:63e225628634 77 for(n=0;n<6;n++)
acastiblancoc 5:63e225628634 78 {
acastiblancoc 5:63e225628634 79 borrar();
acastiblancoc 5:63e225628634 80 for(k=1;k<=8;k++)
acastiblancoc 5:63e225628634 81 {
acastiblancoc 5:63e225628634 82 sendSPI(k,go[k]);
acastiblancoc 5:63e225628634 83 }
acastiblancoc 5:63e225628634 84 wait(0.2);
acastiblancoc 5:63e225628634 85 borrar();
acastiblancoc 5:63e225628634 86 wait(0.2);
acastiblancoc 5:63e225628634 87 }
acastiblancoc 5:63e225628634 88 }
acastiblancoc 5:63e225628634 89
acastiblancoc 5:63e225628634 90
acastiblancoc 4:6f2a8091f2a0 91 void buscar_fila(){
acastiblancoc 3:c9c3a56609f9 92 for (uint8_t i=0;i<9;i++){
acastiblancoc 4:6f2a8091f2a0 93 if((matrix_act[i]& matrix_temp[3])==0){
acastiblancoc 3:c9c3a56609f9 94 fila=i;
acastiblancoc 3:c9c3a56609f9 95 }
acastiblancoc 4:6f2a8091f2a0 96 if(((matrix_act[i]& matrix_temp[3])!=0)&& (i!=9)){
acastiblancoc 4:6f2a8091f2a0 97 fila=i-1;
acastiblancoc 4:6f2a8091f2a0 98 command.printf("Fila pos 1: %d \n", fila);
acastiblancoc 3:c9c3a56609f9 99 i=9;
acastiblancoc 3:c9c3a56609f9 100 }
acastiblancoc 4:6f2a8091f2a0 101 if(((matrix_act[i]& matrix_temp[2])!=0)&& (i!=9)){
acastiblancoc 3:c9c3a56609f9 102 fila=i;
acastiblancoc 3:c9c3a56609f9 103 i=9;
acastiblancoc 4:6f2a8091f2a0 104 command.printf("Fila pos 2: %d \n", fila);
acastiblancoc 3:c9c3a56609f9 105 }
acastiblancoc 4:6f2a8091f2a0 106 if(((matrix_act[i]& matrix_temp[1])!=0)&& (i!=9)){
acastiblancoc 3:c9c3a56609f9 107 fila=i+1;
acastiblancoc 3:c9c3a56609f9 108 i=9;
acastiblancoc 4:6f2a8091f2a0 109 command.printf("Fila pos 3: %d \n", fila);
acastiblancoc 3:c9c3a56609f9 110 }
acastiblancoc 3:c9c3a56609f9 111 }
acastiblancoc 3:c9c3a56609f9 112 if(fila>8)
acastiblancoc 3:c9c3a56609f9 113 fila=8;
acastiblancoc 3:c9c3a56609f9 114 if(fila<=1){
acastiblancoc 5:63e225628634 115 punto=1;
acastiblancoc 5:63e225628634 116 VEL=500;
acastiblancoc 3:c9c3a56609f9 117 wait_ms(VEL);
acastiblancoc 5:63e225628634 118 game_over();
acastiblancoc 3:c9c3a56609f9 119 borrar();
acastiblancoc 3:c9c3a56609f9 120 fila=8;
acastiblancoc 3:c9c3a56609f9 121 }
acastiblancoc 3:c9c3a56609f9 122 };
acastiblancoc 3:c9c3a56609f9 123
acastiblancoc 4:6f2a8091f2a0 124 void guardar(){
acastiblancoc 4:6f2a8091f2a0 125 matrix_act[fila-3]=matrix_temp1[0];
acastiblancoc 4:6f2a8091f2a0 126 matrix_act[fila-2]=matrix_temp1[1];
acastiblancoc 4:6f2a8091f2a0 127 matrix_act[fila-1]=matrix_temp1[2];
acastiblancoc 4:6f2a8091f2a0 128 matrix_act[fila ]=matrix_temp1[3];
acastiblancoc 3:c9c3a56609f9 129 };
acastiblancoc 3:c9c3a56609f9 130
acastiblancoc 4:6f2a8091f2a0 131 void reada()
acastiblancoc 4:6f2a8091f2a0 132 { vx=0;
acastiblancoc 4:6f2a8091f2a0 133 vy=0;
acastiblancoc 4:6f2a8091f2a0 134 vx=joy.read();
acastiblancoc 4:6f2a8091f2a0 135 vy=joy1.read();
acastiblancoc 4:6f2a8091f2a0 136 cc=cambio.read();
acastiblancoc 4:6f2a8091f2a0 137 }
acastiblancoc 3:c9c3a56609f9 138
acastiblancoc 4:6f2a8091f2a0 139 void bajaf()
acastiblancoc 4:6f2a8091f2a0 140 {
OnacSerdna 6:0e75e91820f3 141 movimiento=4;
OnacSerdna 6:0e75e91820f3 142 }
OnacSerdna 6:0e75e91820f3 143 void arr()
OnacSerdna 6:0e75e91820f3 144 {
OnacSerdna 6:0e75e91820f3 145 if (vy<0.2)
OnacSerdna 6:0e75e91820f3 146 movimiento=1;
OnacSerdna 6:0e75e91820f3 147 }
OnacSerdna 6:0e75e91820f3 148 void der()
OnacSerdna 6:0e75e91820f3 149 {
OnacSerdna 6:0e75e91820f3 150 if (vx>0.8)
OnacSerdna 6:0e75e91820f3 151 movimiento=2;
OnacSerdna 6:0e75e91820f3 152 }
OnacSerdna 6:0e75e91820f3 153 void izq()
OnacSerdna 6:0e75e91820f3 154 {
OnacSerdna 6:0e75e91820f3 155 if (vx<0.2)
OnacSerdna 6:0e75e91820f3 156 movimiento=3;
OnacSerdna 6:0e75e91820f3 157 }
acastiblancoc 4:6f2a8091f2a0 158 void movimiento_fig(){
acastiblancoc 5:63e225628634 159 reada();
acastiblancoc 4:6f2a8091f2a0 160 command.printf("vy = %f \n", vy);
acastiblancoc 4:6f2a8091f2a0 161 command.printf("vx = %f \n", vx);
acastiblancoc 4:6f2a8091f2a0 162 command.printf("cc = %f \n", cambio.read());
acastiblancoc 4:6f2a8091f2a0 163 if(vy<0.2)
acastiblancoc 4:6f2a8091f2a0 164 movimiento=1;
acastiblancoc 5:63e225628634 165 if(vy>0.8)
acastiblancoc 4:6f2a8091f2a0 166 movimiento=4;
acastiblancoc 4:6f2a8091f2a0 167 if(vx<0.2)
acastiblancoc 4:6f2a8091f2a0 168 movimiento=3;
OnacSerdna 6:0e75e91820f3 169 if(vx>0.8)
acastiblancoc 4:6f2a8091f2a0 170 movimiento=2;
acastiblancoc 4:6f2a8091f2a0 171 command.printf("movimiento = %d \n", movimiento);
acastiblancoc 4:6f2a8091f2a0 172 switch (movimiento){
acastiblancoc 3:c9c3a56609f9 173
acastiblancoc 4:6f2a8091f2a0 174 case 4:
acastiblancoc 3:c9c3a56609f9 175 cont++;
acastiblancoc 4:6f2a8091f2a0 176 //printf("%f", joy.read());
acastiblancoc 3:c9c3a56609f9 177 if(cont>8)cont=8;
acastiblancoc 4:6f2a8091f2a0 178 break;
acastiblancoc 3:c9c3a56609f9 179
acastiblancoc 3:c9c3a56609f9 180 case 1:
acastiblancoc 4:6f2a8091f2a0 181 if( (matrix_temp[1]==2) || (matrix_temp[1]==1)|| (matrix_temp[1]==3))
acastiblancoc 4:6f2a8091f2a0 182 columna--;
acastiblancoc 4:6f2a8091f2a0 183 rotacion++;
acastiblancoc 4:6f2a8091f2a0 184 if(rotacion>4)
acastiblancoc 4:6f2a8091f2a0 185 rotacion=1;
acastiblancoc 4:6f2a8091f2a0 186 break;
acastiblancoc 3:c9c3a56609f9 187
acastiblancoc 4:6f2a8091f2a0 188 case 2:
acastiblancoc 4:6f2a8091f2a0 189 if((matrix_temp[2]==7 || matrix_temp[3]==7)||(matrix_temp[2]==3 && matrix_temp[3]==6)) {
acastiblancoc 3:c9c3a56609f9 190 command.printf("a");
acastiblancoc 4:6f2a8091f2a0 191 columna=6;
acastiblancoc 3:c9c3a56609f9 192 }
acastiblancoc 4:6f2a8091f2a0 193 else if((matrix_temp[1]==2 && matrix_temp[2]==2 && matrix_temp[3]==2)){
acastiblancoc 4:6f2a8091f2a0 194 command.printf("b");
acastiblancoc 4:6f2a8091f2a0 195 columna=8;
acastiblancoc 4:6f2a8091f2a0 196 }
acastiblancoc 4:6f2a8091f2a0 197 else if (columna<7){
acastiblancoc 4:6f2a8091f2a0 198 command.printf("c");
acastiblancoc 4:6f2a8091f2a0 199 columna++;
acastiblancoc 3:c9c3a56609f9 200 }
acastiblancoc 4:6f2a8091f2a0 201 //printf("%f", joy1.read());
acastiblancoc 4:6f2a8091f2a0 202 break;
acastiblancoc 4:6f2a8091f2a0 203
acastiblancoc 3:c9c3a56609f9 204 case 3:
acastiblancoc 4:6f2a8091f2a0 205 columna--;
acastiblancoc 4:6f2a8091f2a0 206 if(columna<1)
acastiblancoc 4:6f2a8091f2a0 207 columna=1;
acastiblancoc 4:6f2a8091f2a0 208 //printf("%f", joy.read());
acastiblancoc 4:6f2a8091f2a0 209 break;
acastiblancoc 4:6f2a8091f2a0 210
acastiblancoc 4:6f2a8091f2a0 211 }
acastiblancoc 3:c9c3a56609f9 212 }
acastiblancoc 3:c9c3a56609f9 213
acastiblancoc 3:c9c3a56609f9 214
acastiblancoc 4:6f2a8091f2a0 215 void print_matrix(uint8_t *temp){
acastiblancoc 4:6f2a8091f2a0 216 matrix_temp1[0]=(matrix_temp[0]+ matrix_act[cont-3]);
acastiblancoc 4:6f2a8091f2a0 217 matrix_temp1[1]=(matrix_temp[1]+ matrix_act[cont-2]);
acastiblancoc 4:6f2a8091f2a0 218 matrix_temp1[2]=(matrix_temp[2]+ matrix_act[cont-1]);
acastiblancoc 4:6f2a8091f2a0 219 matrix_temp1[3]=(matrix_temp[3]+ matrix_act[cont]);
acastiblancoc 4:6f2a8091f2a0 220 sendSPI(cont-3,matrix_temp1[0]);
acastiblancoc 4:6f2a8091f2a0 221 sendSPI(cont-2,matrix_temp1[1]);
acastiblancoc 4:6f2a8091f2a0 222 sendSPI(cont-1,matrix_temp1[2]);
acastiblancoc 4:6f2a8091f2a0 223 sendSPI(cont ,matrix_temp1[3]); //pasa de i+2 a i+1
acastiblancoc 5:63e225628634 224 if(punto%4==0)
acastiblancoc 5:63e225628634 225 {
acastiblancoc 5:63e225628634 226 VEL=VEL/3;
acastiblancoc 5:63e225628634 227 if(VEL<=50)
acastiblancoc 5:63e225628634 228 VEL=50;
acastiblancoc 5:63e225628634 229 }
acastiblancoc 3:c9c3a56609f9 230 wait_ms(VEL);
acastiblancoc 3:c9c3a56609f9 231 }
acastiblancoc 3:c9c3a56609f9 232
acastiblancoc 4:6f2a8091f2a0 233 void crear_fig(char type_fig,char rotacion,char columna)
acastiblancoc 3:c9c3a56609f9 234 {
acastiblancoc 3:c9c3a56609f9 235 switch (type_fig){
acastiblancoc 3:c9c3a56609f9 236 case 1: if(columna>7)
acastiblancoc 3:c9c3a56609f9 237 columna=7;
acastiblancoc 4:6f2a8091f2a0 238 copy_matrix(5,1,1,PLANT,columna); break;
acastiblancoc 3:c9c3a56609f9 239
acastiblancoc 4:6f2a8091f2a0 240 case 2: if(rotacion==1 || rotacion==3)
acastiblancoc 4:6f2a8091f2a0 241 copy_matrix(0,0,0,PLANT,columna);
acastiblancoc 4:6f2a8091f2a0 242 if(rotacion==2 || rotacion==4)
acastiblancoc 4:6f2a8091f2a0 243 copy_matrix(5,5,2,PLANT,columna);
acastiblancoc 3:c9c3a56609f9 244 break;
acastiblancoc 3:c9c3a56609f9 245
acastiblancoc 4:6f2a8091f2a0 246 case 3: if(rotacion==1)
acastiblancoc 4:6f2a8091f2a0 247 copy_matrix(0,0,1,PLANT,columna);
acastiblancoc 4:6f2a8091f2a0 248 if(rotacion==2)
acastiblancoc 4:6f2a8091f2a0 249 copy_matrix(5,2,0,PLANT,columna);
acastiblancoc 4:6f2a8091f2a0 250 if(rotacion==3)
acastiblancoc 4:6f2a8091f2a0 251 copy_matrix(1,3,3,PLANT,columna);
acastiblancoc 4:6f2a8091f2a0 252 if(rotacion==4)
acastiblancoc 4:6f2a8091f2a0 253 copy_matrix(5,6,2,PLANT,columna);
acastiblancoc 3:c9c3a56609f9 254 break;
acastiblancoc 3:c9c3a56609f9 255
acastiblancoc 4:6f2a8091f2a0 256 case 4: if(rotacion==1)
acastiblancoc 4:6f2a8091f2a0 257 copy_matrix(5,3,2,PLANT,columna);
acastiblancoc 4:6f2a8091f2a0 258 if(rotacion==2)
acastiblancoc 4:6f2a8091f2a0 259 copy_matrix(0,1,0,PLANT,columna);
acastiblancoc 4:6f2a8091f2a0 260 if(rotacion==3)
acastiblancoc 4:6f2a8091f2a0 261 copy_matrix(5,2,3,PLANT,columna);
acastiblancoc 4:6f2a8091f2a0 262 if(rotacion==4)
acastiblancoc 4:6f2a8091f2a0 263 copy_matrix(3,1,3,PLANT,columna);
acastiblancoc 3:c9c3a56609f9 264 break;
acastiblancoc 3:c9c3a56609f9 265
acastiblancoc 4:6f2a8091f2a0 266 case 5: if(rotacion==1 || rotacion==3)
acastiblancoc 4:6f2a8091f2a0 267 copy_matrix(5,4,1,PLANT,columna);
acastiblancoc 4:6f2a8091f2a0 268 if(rotacion==2 || rotacion==4)
acastiblancoc 4:6f2a8091f2a0 269 copy_matrix(0,1,3,PLANT,columna);
acastiblancoc 3:c9c3a56609f9 270 break;
acastiblancoc 3:c9c3a56609f9 271 }
acastiblancoc 3:c9c3a56609f9 272 }
acastiblancoc 3:c9c3a56609f9 273
acastiblancoc 4:6f2a8091f2a0 274 void figuras(){
acastiblancoc 4:6f2a8091f2a0 275 figura= rand() % 5+1;
acastiblancoc 4:6f2a8091f2a0 276 rotacion= rand() % 4+1;
acastiblancoc 4:6f2a8091f2a0 277 columna= 4;
acastiblancoc 3:c9c3a56609f9 278 }
acastiblancoc 3:c9c3a56609f9 279
acastiblancoc 4:6f2a8091f2a0 280 void elimina_linea(){
acastiblancoc 4:6f2a8091f2a0 281 for(uint8_t i=0;i<9;i++){
acastiblancoc 4:6f2a8091f2a0 282 if(matrix_act[i]==255){
acastiblancoc 3:c9c3a56609f9 283 for(uint8_t a=i;a>=1;a--){
acastiblancoc 4:6f2a8091f2a0 284 sendSPI(a,matrix_act[a-1]);
acastiblancoc 4:6f2a8091f2a0 285 matrix_act[a]=matrix_act[a-1];
acastiblancoc 3:c9c3a56609f9 286 }
acastiblancoc 5:63e225628634 287 punto++;
acastiblancoc 5:63e225628634 288 printf("%f", punto);
acastiblancoc 3:c9c3a56609f9 289 }
acastiblancoc 3:c9c3a56609f9 290 }
acastiblancoc 3:c9c3a56609f9 291 }
acastiblancoc 3:c9c3a56609f9 292
acastiblancoc 3:c9c3a56609f9 293 int main() {
acastiblancoc 4:6f2a8091f2a0 294 bajar.attach(&bajaf, 0.1);
acastiblancoc 4:6f2a8091f2a0 295 init_display();
acastiblancoc 3:c9c3a56609f9 296 borrar();
OnacSerdna 6:0e75e91820f3 297 cambi.attach(&arr,0.1);
OnacSerdna 6:0e75e91820f3 298 dere.attach(&der,0.1);
OnacSerdna 6:0e75e91820f3 299 izqui.attach(&izq,0.1);
acastiblancoc 3:c9c3a56609f9 300 while(1){
acastiblancoc 4:6f2a8091f2a0 301 figuras();
acastiblancoc 4:6f2a8091f2a0 302 buscar_fila();
acastiblancoc 4:6f2a8091f2a0 303 cont=0;
acastiblancoc 5:63e225628634 304 elimina_linea();
acastiblancoc 3:c9c3a56609f9 305 while (cont<fila){
acastiblancoc 4:6f2a8091f2a0 306 movimiento_fig();
acastiblancoc 4:6f2a8091f2a0 307 crear_fig(figura,rotacion,columna);
acastiblancoc 4:6f2a8091f2a0 308 buscar_fila();
acastiblancoc 4:6f2a8091f2a0 309 print_matrix(matrix_temp);
acastiblancoc 4:6f2a8091f2a0 310 }
acastiblancoc 4:6f2a8091f2a0 311 guardar();
acastiblancoc 3:c9c3a56609f9 312 }
acastiblancoc 3:c9c3a56609f9 313 }