EJERCICIO 3 - TERMINADO - SOTELO - D´ANDREA

Dependencies:   mbed tsi_sensor

Committer:
feede_dandrea
Date:
Tue Jun 18 13:48:37 2019 +0000
Revision:
0:8926c94dcd52
Ejercicio 3 terminado;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
feede_dandrea 0:8926c94dcd52 1 //TRABAJO PRACTICO 1 - BOMBA
feede_dandrea 0:8926c94dcd52 2
feede_dandrea 0:8926c94dcd52 3 #include "mbed.h"
feede_dandrea 0:8926c94dcd52 4 #include <stdlib.h> /* srand, rand */
feede_dandrea 0:8926c94dcd52 5 #include <time.h> /* time */
feede_dandrea 0:8926c94dcd52 6 #include "tsi_sensor.h"
feede_dandrea 0:8926c94dcd52 7
feede_dandrea 0:8926c94dcd52 8
feede_dandrea 0:8926c94dcd52 9 /* This defines will be replaced by PinNames soon */
feede_dandrea 0:8926c94dcd52 10 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
feede_dandrea 0:8926c94dcd52 11 #define ELEC0 9
feede_dandrea 0:8926c94dcd52 12 #define ELEC1 10
feede_dandrea 0:8926c94dcd52 13 #elif defined (TARGET_KL05Z)
feede_dandrea 0:8926c94dcd52 14 #define ELEC0 9
feede_dandrea 0:8926c94dcd52 15 #define ELEC1 8
feede_dandrea 0:8926c94dcd52 16 #else
feede_dandrea 0:8926c94dcd52 17 #error TARGET NOT DEFINED
feede_dandrea 0:8926c94dcd52 18 #endif
feede_dandrea 0:8926c94dcd52 19
feede_dandrea 0:8926c94dcd52 20
feede_dandrea 0:8926c94dcd52 21
feede_dandrea 0:8926c94dcd52 22 TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
feede_dandrea 0:8926c94dcd52 23
feede_dandrea 0:8926c94dcd52 24
feede_dandrea 0:8926c94dcd52 25 DigitalOut rojo(LED_RED);
feede_dandrea 0:8926c94dcd52 26 DigitalOut verde(LED_GREEN);
feede_dandrea 0:8926c94dcd52 27 DigitalOut azul(LED_BLUE);
feede_dandrea 0:8926c94dcd52 28
feede_dandrea 0:8926c94dcd52 29 DigitalIn cable_1(PTD3);
feede_dandrea 0:8926c94dcd52 30 DigitalIn cable_2(PTD2);
feede_dandrea 0:8926c94dcd52 31 DigitalIn cable_3(PTD0);
feede_dandrea 0:8926c94dcd52 32 DigitalIn cable_4(PTD5);
feede_dandrea 0:8926c94dcd52 33
feede_dandrea 0:8926c94dcd52 34 AnalogIn aleatorio(PTB0);
feede_dandrea 0:8926c94dcd52 35
feede_dandrea 0:8926c94dcd52 36 DigitalOut unidad_0(PTE20); //Menos significativo unidad
feede_dandrea 0:8926c94dcd52 37 DigitalOut unidad_1(PTB1);
feede_dandrea 0:8926c94dcd52 38 DigitalOut unidad_2(PTB2);
feede_dandrea 0:8926c94dcd52 39 DigitalOut unidad_3(PTB3); //Mas significativo unidad
feede_dandrea 0:8926c94dcd52 40 DigitalOut decena_1(PTC2); //Mas significativo decena
feede_dandrea 0:8926c94dcd52 41 DigitalOut decena_0(PTC1); //Menos significativo decena
feede_dandrea 0:8926c94dcd52 42 DigitalOut decena_3(PTE30); //Se pone en "1" para que en los display no muestre nada
feede_dandrea 0:8926c94dcd52 43
feede_dandrea 0:8926c94dcd52 44 char cables[3];
feede_dandrea 0:8926c94dcd52 45
feede_dandrea 0:8926c94dcd52 46 Ticker resultado;
feede_dandrea 0:8926c94dcd52 47
feede_dandrea 0:8926c94dcd52 48
feede_dandrea 0:8926c94dcd52 49 Ticker gameplay;
feede_dandrea 0:8926c94dcd52 50 enum {INICIO,GENERADOR,DETECCION,CHEQUEO};
feede_dandrea 0:8926c94dcd52 51 enum {COMIENZO,GANASTE,PERDISTE};
feede_dandrea 0:8926c94dcd52 52 int juego_estado=0;
feede_dandrea 0:8926c94dcd52 53
feede_dandrea 0:8926c94dcd52 54
feede_dandrea 0:8926c94dcd52 55 Ticker muestra_cables;
feede_dandrea 0:8926c94dcd52 56 enum {F,ALEATORIO,LLENADO};
feede_dandrea 0:8926c94dcd52 57 enum {CABLE1,CABLE2,CABLE3,CABLE4};
feede_dandrea 0:8926c94dcd52 58 int generador=0,valor_guardado=0,n_generador=0,valor_generado=0,comienza_juego=0,modo_display=0, n_display=0,tiempo_juego=30;
feede_dandrea 0:8926c94dcd52 59 int cable1_ocupado=0,cable2_ocupado=0,cable3_ocupado=0,cable4_ocupado=0,chequeo_cable1=0,chequeo_cable2=0,chequeo_cable3=0,chequeo_cable4=0,game_state=0;
feede_dandrea 0:8926c94dcd52 60 int conteo_cables=0;
feede_dandrea 0:8926c94dcd52 61 int codigo_generado[3];
feede_dandrea 0:8926c94dcd52 62 int decena=0, unidade=0,apagar=0;
feede_dandrea 0:8926c94dcd52 63
feede_dandrea 0:8926c94dcd52 64 Ticker display;
feede_dandrea 0:8926c94dcd52 65 enum {APAGADO,ENCENDIDO};
feede_dandrea 0:8926c94dcd52 66 enum {PARPADEO,CUENTA_REGRESIVA,ESTATICO};
feede_dandrea 0:8926c94dcd52 67
feede_dandrea 0:8926c94dcd52 68
feede_dandrea 0:8926c94dcd52 69 void display_mostrar(int decenas, int unidades,int apagar) //esta funcion se encarga de controlar los displays dependiendo a la informacion enviada
feede_dandrea 0:8926c94dcd52 70 {
feede_dandrea 0:8926c94dcd52 71 if(apagar==0) {
feede_dandrea 0:8926c94dcd52 72 if(unidades==0) {
feede_dandrea 0:8926c94dcd52 73 unidad_0=0;
feede_dandrea 0:8926c94dcd52 74 unidad_1=0;
feede_dandrea 0:8926c94dcd52 75 unidad_2=0;
feede_dandrea 0:8926c94dcd52 76 unidad_3=0;
feede_dandrea 0:8926c94dcd52 77 }
feede_dandrea 0:8926c94dcd52 78 if(unidades==1) {
feede_dandrea 0:8926c94dcd52 79 unidad_0=1;
feede_dandrea 0:8926c94dcd52 80 unidad_1=0;
feede_dandrea 0:8926c94dcd52 81 unidad_2=0;
feede_dandrea 0:8926c94dcd52 82 unidad_3=0;
feede_dandrea 0:8926c94dcd52 83 }
feede_dandrea 0:8926c94dcd52 84 if(unidades==2) {
feede_dandrea 0:8926c94dcd52 85 unidad_0=0;
feede_dandrea 0:8926c94dcd52 86 unidad_1=1;
feede_dandrea 0:8926c94dcd52 87 unidad_2=0;
feede_dandrea 0:8926c94dcd52 88 unidad_3=0;
feede_dandrea 0:8926c94dcd52 89 }
feede_dandrea 0:8926c94dcd52 90 if(unidades==3) {
feede_dandrea 0:8926c94dcd52 91 unidad_0=1;
feede_dandrea 0:8926c94dcd52 92 unidad_1=1;
feede_dandrea 0:8926c94dcd52 93 unidad_2=0;
feede_dandrea 0:8926c94dcd52 94 unidad_3=0;
feede_dandrea 0:8926c94dcd52 95 }
feede_dandrea 0:8926c94dcd52 96 if(unidades==4) {
feede_dandrea 0:8926c94dcd52 97 unidad_0=0;
feede_dandrea 0:8926c94dcd52 98 unidad_1=0;
feede_dandrea 0:8926c94dcd52 99 unidad_2=1;
feede_dandrea 0:8926c94dcd52 100 unidad_3=0;
feede_dandrea 0:8926c94dcd52 101 }
feede_dandrea 0:8926c94dcd52 102 if(unidades==5) {
feede_dandrea 0:8926c94dcd52 103 unidad_0=1;
feede_dandrea 0:8926c94dcd52 104 unidad_1=0;
feede_dandrea 0:8926c94dcd52 105 unidad_2=1;
feede_dandrea 0:8926c94dcd52 106 unidad_3=0;
feede_dandrea 0:8926c94dcd52 107 }
feede_dandrea 0:8926c94dcd52 108 if(unidades==6) {
feede_dandrea 0:8926c94dcd52 109 unidad_0=0;
feede_dandrea 0:8926c94dcd52 110 unidad_1=1;
feede_dandrea 0:8926c94dcd52 111 unidad_2=1;
feede_dandrea 0:8926c94dcd52 112 unidad_3=0;
feede_dandrea 0:8926c94dcd52 113 }
feede_dandrea 0:8926c94dcd52 114 if(unidades==7) {
feede_dandrea 0:8926c94dcd52 115 unidad_0=1;
feede_dandrea 0:8926c94dcd52 116 unidad_1=1;
feede_dandrea 0:8926c94dcd52 117 unidad_2=1;
feede_dandrea 0:8926c94dcd52 118 unidad_3=0;
feede_dandrea 0:8926c94dcd52 119 }
feede_dandrea 0:8926c94dcd52 120 if(unidades==8) {
feede_dandrea 0:8926c94dcd52 121 unidad_0=0;
feede_dandrea 0:8926c94dcd52 122 unidad_1=0;
feede_dandrea 0:8926c94dcd52 123 unidad_2=0;
feede_dandrea 0:8926c94dcd52 124 unidad_3=1;
feede_dandrea 0:8926c94dcd52 125 }
feede_dandrea 0:8926c94dcd52 126 if(unidades==9) {
feede_dandrea 0:8926c94dcd52 127 unidad_0=1;
feede_dandrea 0:8926c94dcd52 128 unidad_1=0;
feede_dandrea 0:8926c94dcd52 129 unidad_2=0;
feede_dandrea 0:8926c94dcd52 130 unidad_3=1;
feede_dandrea 0:8926c94dcd52 131 }
feede_dandrea 0:8926c94dcd52 132 if(decenas==0) {
feede_dandrea 0:8926c94dcd52 133 decena_0=0;
feede_dandrea 0:8926c94dcd52 134 decena_1=0;
feede_dandrea 0:8926c94dcd52 135 decena_3=0;
feede_dandrea 0:8926c94dcd52 136
feede_dandrea 0:8926c94dcd52 137 }
feede_dandrea 0:8926c94dcd52 138 if(decenas==1) {
feede_dandrea 0:8926c94dcd52 139 decena_0=1;
feede_dandrea 0:8926c94dcd52 140 decena_1=0;
feede_dandrea 0:8926c94dcd52 141 decena_3=0;
feede_dandrea 0:8926c94dcd52 142 }
feede_dandrea 0:8926c94dcd52 143 if(decenas==2) {
feede_dandrea 0:8926c94dcd52 144 decena_0=0;
feede_dandrea 0:8926c94dcd52 145 decena_1=1;
feede_dandrea 0:8926c94dcd52 146 decena_3=0;
feede_dandrea 0:8926c94dcd52 147 }
feede_dandrea 0:8926c94dcd52 148 if(decenas==3) {
feede_dandrea 0:8926c94dcd52 149 decena_0=1;
feede_dandrea 0:8926c94dcd52 150 decena_1=1;
feede_dandrea 0:8926c94dcd52 151 decena_3=0;
feede_dandrea 0:8926c94dcd52 152 }
feede_dandrea 0:8926c94dcd52 153 } else {
feede_dandrea 0:8926c94dcd52 154 decena_0=1;
feede_dandrea 0:8926c94dcd52 155 decena_1=1;
feede_dandrea 0:8926c94dcd52 156 decena_3=1;
feede_dandrea 0:8926c94dcd52 157 unidad_0=1;
feede_dandrea 0:8926c94dcd52 158 unidad_1=1;
feede_dandrea 0:8926c94dcd52 159 unidad_2=1;
feede_dandrea 0:8926c94dcd52 160 unidad_3=1;
feede_dandrea 0:8926c94dcd52 161 }
feede_dandrea 0:8926c94dcd52 162 }
feede_dandrea 0:8926c94dcd52 163
feede_dandrea 0:8926c94dcd52 164 void generador_aleatorio() //esta funcion genera los valores aleatorios
feede_dandrea 0:8926c94dcd52 165 {
feede_dandrea 0:8926c94dcd52 166 switch(generador) {
feede_dandrea 0:8926c94dcd52 167 case COMIENZO:
feede_dandrea 0:8926c94dcd52 168 srand(int(aleatorio * 1000)); //leemos la entrada de una pata analogica para obtener un valor entero unico y poder generar valores aleatorios
feede_dandrea 0:8926c94dcd52 169 if(n_generador<4) { //se repeite la secuencia hasta que se obtiene el orden aleatorio de los cables
feede_dandrea 0:8926c94dcd52 170 generador=ALEATORIO;
feede_dandrea 0:8926c94dcd52 171 }
feede_dandrea 0:8926c94dcd52 172 break;
feede_dandrea 0:8926c94dcd52 173
feede_dandrea 0:8926c94dcd52 174 case ALEATORIO:
feede_dandrea 0:8926c94dcd52 175 valor_generado=rand()%4; //genera el valor aleatorio
feede_dandrea 0:8926c94dcd52 176 generador=LLENADO;
feede_dandrea 0:8926c94dcd52 177 break;
feede_dandrea 0:8926c94dcd52 178
feede_dandrea 0:8926c94dcd52 179 case LLENADO: //agarra el valor aleatorio generado y lo asigna en el vector siempre y cuando no se haya repetido, de lo contrario lo ignora y genera otro
feede_dandrea 0:8926c94dcd52 180 valor_guardado=valor_generado;
feede_dandrea 0:8926c94dcd52 181 if((cable1_ocupado==0)||(cable2_ocupado==0)||(cable3_ocupado==0)||(cable4_ocupado==0)) {//se entra siempre y cuando falte algun cable que asignar
feede_dandrea 0:8926c94dcd52 182 if((valor_guardado==CABLE1)&&(cable1_ocupado==0)) { //solo se ingresa una vez, por ende el valor de cable es unico y asi susesivamente
feede_dandrea 0:8926c94dcd52 183 cables[n_generador]=0;
feede_dandrea 0:8926c94dcd52 184 printf(" CABLE %d \r\n",(valor_guardado+1));
feede_dandrea 0:8926c94dcd52 185 cable1_ocupado=1;
feede_dandrea 0:8926c94dcd52 186 n_generador++;
feede_dandrea 0:8926c94dcd52 187 }
feede_dandrea 0:8926c94dcd52 188
feede_dandrea 0:8926c94dcd52 189 if((valor_guardado==CABLE2)&&(cable2_ocupado==0)) {
feede_dandrea 0:8926c94dcd52 190 cables[n_generador]=1;
feede_dandrea 0:8926c94dcd52 191 printf(" CABLE %d \r\n",(valor_guardado+1));
feede_dandrea 0:8926c94dcd52 192 cable2_ocupado=1;
feede_dandrea 0:8926c94dcd52 193 n_generador++;
feede_dandrea 0:8926c94dcd52 194 }
feede_dandrea 0:8926c94dcd52 195
feede_dandrea 0:8926c94dcd52 196 if((valor_guardado==CABLE3)&&(cable3_ocupado==0)) {
feede_dandrea 0:8926c94dcd52 197 cables[n_generador]=2;
feede_dandrea 0:8926c94dcd52 198 printf(" CABLE %d \r\n",(valor_guardado+1));
feede_dandrea 0:8926c94dcd52 199 cable3_ocupado=1;
feede_dandrea 0:8926c94dcd52 200 n_generador++;
feede_dandrea 0:8926c94dcd52 201 }
feede_dandrea 0:8926c94dcd52 202
feede_dandrea 0:8926c94dcd52 203 if((valor_guardado==CABLE4)&&(cable4_ocupado==0)) {
feede_dandrea 0:8926c94dcd52 204 cables[n_generador]=3;
feede_dandrea 0:8926c94dcd52 205 printf(" CABLE %d \r\n",(valor_guardado+1));
feede_dandrea 0:8926c94dcd52 206 cable4_ocupado=1;
feede_dandrea 0:8926c94dcd52 207 n_generador++;
feede_dandrea 0:8926c94dcd52 208 }
feede_dandrea 0:8926c94dcd52 209 generador = ALEATORIO;
feede_dandrea 0:8926c94dcd52 210 } else {//una vez completado los 4 cables sigue el juego
feede_dandrea 0:8926c94dcd52 211 n_generador=4;
feede_dandrea 0:8926c94dcd52 212 juego_estado=DETECCION;
feede_dandrea 0:8926c94dcd52 213 generador= INICIO;
feede_dandrea 0:8926c94dcd52 214 }
feede_dandrea 0:8926c94dcd52 215
feede_dandrea 0:8926c94dcd52 216 break;
feede_dandrea 0:8926c94dcd52 217 }
feede_dandrea 0:8926c94dcd52 218 }
feede_dandrea 0:8926c94dcd52 219
feede_dandrea 0:8926c94dcd52 220 void display_funcion() //se encarga de hacer la cuenta regresiva automatica del display y del parpadeo, esta funcion esta corriendo permanentemente cada un segundo
feede_dandrea 0:8926c94dcd52 221 {
feede_dandrea 0:8926c94dcd52 222 switch (modo_display) {
feede_dandrea 0:8926c94dcd52 223 case CUENTA_REGRESIVA: //descuenta el tiempo y calcula los valores para obtener decenas y unidades separadas
feede_dandrea 0:8926c94dcd52 224 decena=tiempo_juego/10;
feede_dandrea 0:8926c94dcd52 225 unidade=tiempo_juego-(decena*10);
feede_dandrea 0:8926c94dcd52 226 apagar=0;
feede_dandrea 0:8926c94dcd52 227 display_mostrar(decena,unidade,apagar);//llammos a la funcion display_mostrar que se encarga de mostrar los numeros, se los asignamos separados
feede_dandrea 0:8926c94dcd52 228 printf("Tiempo %d\n\r",tiempo_juego);
feede_dandrea 0:8926c94dcd52 229 tiempo_juego--;//descuenta el tiempo
feede_dandrea 0:8926c94dcd52 230 if(tiempo_juego==0) {//si llega a cero pierde de todas formas
feede_dandrea 0:8926c94dcd52 231 decena=tiempo_juego/10;
feede_dandrea 0:8926c94dcd52 232 unidade=tiempo_juego-(decena*10);
feede_dandrea 0:8926c94dcd52 233 game_state=PERDISTE;
feede_dandrea 0:8926c94dcd52 234 modo_display=PARPADEO;
feede_dandrea 0:8926c94dcd52 235 }
feede_dandrea 0:8926c94dcd52 236 break;
feede_dandrea 0:8926c94dcd52 237
feede_dandrea 0:8926c94dcd52 238 case PARPADEO: //si alguien gana o pierde se activa el parpadeo
feede_dandrea 0:8926c94dcd52 239 if(n_display%2==0) {//para poder hcer el efecto de parpadeo incrementamos una funcion y en numeros pares muesta y en impares se apaga
feede_dandrea 0:8926c94dcd52 240 display_mostrar(decena,unidade,1);
feede_dandrea 0:8926c94dcd52 241 if(game_state==PERDISTE) {
feede_dandrea 0:8926c94dcd52 242 rojo=0;
feede_dandrea 0:8926c94dcd52 243 }
feede_dandrea 0:8926c94dcd52 244 } else {
feede_dandrea 0:8926c94dcd52 245 display_mostrar(decena,unidade,0);
feede_dandrea 0:8926c94dcd52 246 if(game_state==PERDISTE) {
feede_dandrea 0:8926c94dcd52 247 rojo=1;
feede_dandrea 0:8926c94dcd52 248 }
feede_dandrea 0:8926c94dcd52 249 }
feede_dandrea 0:8926c94dcd52 250 //printf("Tiempo %d\n\r",tiempo_juego);
feede_dandrea 0:8926c94dcd52 251 n_display++;
feede_dandrea 0:8926c94dcd52 252 break;
feede_dandrea 0:8926c94dcd52 253
feede_dandrea 0:8926c94dcd52 254 }
feede_dandrea 0:8926c94dcd52 255
feede_dandrea 0:8926c94dcd52 256 }
feede_dandrea 0:8926c94dcd52 257
feede_dandrea 0:8926c94dcd52 258 void juego()
feede_dandrea 0:8926c94dcd52 259 {
feede_dandrea 0:8926c94dcd52 260 switch (juego_estado) {//la funcion dell juergo base
feede_dandrea 0:8926c94dcd52 261 case INICIO:
feede_dandrea 0:8926c94dcd52 262 if(game_state==PERDISTE) {//si se pierde se activa el parpadeo, al perder ademas titila el led rojo
feede_dandrea 0:8926c94dcd52 263 modo_display=PARPADEO;
feede_dandrea 0:8926c94dcd52 264 comienza_juego=0;//esto permite que se resetee el juego desde el TSI
feede_dandrea 0:8926c94dcd52 265 }
feede_dandrea 0:8926c94dcd52 266 if(game_state==GANASTE) {//si se gana se activa el parpadeo
feede_dandrea 0:8926c94dcd52 267 modo_display=PARPADEO;
feede_dandrea 0:8926c94dcd52 268 comienza_juego=0;//esto permite que se resetee el juego desde el TSI
feede_dandrea 0:8926c94dcd52 269 verde=0;//al ganar el led verde es fijo
feede_dandrea 0:8926c94dcd52 270 }
feede_dandrea 0:8926c94dcd52 271 if(game_state==COMIENZO) {//comienza el juego
feede_dandrea 0:8926c94dcd52 272 printf(" COMIENZA EL JUEGO \r\n\n");
feede_dandrea 0:8926c94dcd52 273 printf("Secuencia : \r\n");
feede_dandrea 0:8926c94dcd52 274 juego_estado=GENERADOR;
feede_dandrea 0:8926c94dcd52 275 }
feede_dandrea 0:8926c94dcd52 276 break;
feede_dandrea 0:8926c94dcd52 277
feede_dandrea 0:8926c94dcd52 278 case GENERADOR:
feede_dandrea 0:8926c94dcd52 279 generador_aleatorio();//llamada a la funcion, a generar los cables aleatorios
feede_dandrea 0:8926c94dcd52 280 tiempo_juego=30;//se setea un tiempo maximo de 30 segundos
feede_dandrea 0:8926c94dcd52 281 modo_display=CUENTA_REGRESIVA;//se activa la cuenta regresiva
feede_dandrea 0:8926c94dcd52 282 display.attach(&display_funcion, 1);//se llama al a funcion cada un segundo
feede_dandrea 0:8926c94dcd52 283 break;
feede_dandrea 0:8926c94dcd52 284
feede_dandrea 0:8926c94dcd52 285 case DETECCION://comienza a detectar los cables
feede_dandrea 0:8926c94dcd52 286 if((cable_1==1)&&(chequeo_cable1==0)) { //los cables se sacan una vez por lo tanto solo se puede entrar una vez en este estado, y al primer error se pierde
feede_dandrea 0:8926c94dcd52 287 if(cables[conteo_cables]==0) {
feede_dandrea 0:8926c94dcd52 288 conteo_cables++;//es correcto y se incrementa la variable para buscar el siguiente cable
feede_dandrea 0:8926c94dcd52 289 printf("CABLE 1 SACADO CON EXITO \r\n\n");
feede_dandrea 0:8926c94dcd52 290 chequeo_cable1=1;
feede_dandrea 0:8926c94dcd52 291 } else {
feede_dandrea 0:8926c94dcd52 292 game_state=PERDISTE;
feede_dandrea 0:8926c94dcd52 293 printf("KBOOOM!. HAZ PERDIDO. EL CABLE 1 NO ERA, LO 100TO HEE HEE\n\r");
feede_dandrea 0:8926c94dcd52 294 juego_estado=INICIO;
feede_dandrea 0:8926c94dcd52 295 }
feede_dandrea 0:8926c94dcd52 296 }
feede_dandrea 0:8926c94dcd52 297 if((cable_2==1)&&(chequeo_cable2==0)) { //los cables se sacan una vez por lo tanto solo se puede entrar una vez en este estado, y al primer error se pierde
feede_dandrea 0:8926c94dcd52 298 if(cables[conteo_cables]==1) {
feede_dandrea 0:8926c94dcd52 299 conteo_cables++;//es correcto y se incrementa la variable para buscar el siguiente cable
feede_dandrea 0:8926c94dcd52 300 printf("CABLE 2 SACADO CON EXITO \r\n\n");
feede_dandrea 0:8926c94dcd52 301 chequeo_cable2=1;
feede_dandrea 0:8926c94dcd52 302 } else {
feede_dandrea 0:8926c94dcd52 303 game_state=PERDISTE;
feede_dandrea 0:8926c94dcd52 304 printf("KBOOOM!. HAZ PERDIDO. EL CABLE 2 NO ERA, LO 100TO HEE HEE\n\r");
feede_dandrea 0:8926c94dcd52 305 juego_estado=INICIO;
feede_dandrea 0:8926c94dcd52 306 }
feede_dandrea 0:8926c94dcd52 307 }
feede_dandrea 0:8926c94dcd52 308 if((cable_3==1)&&(chequeo_cable3==0)) { //los cables se sacan una vez por lo tanto solo se puede entrar una vez en este estado, y al primer error se pierde
feede_dandrea 0:8926c94dcd52 309 if(cables[conteo_cables]==2) {
feede_dandrea 0:8926c94dcd52 310 conteo_cables++;//es correcto y se incrementa la variable para buscar el siguiente cable
feede_dandrea 0:8926c94dcd52 311 printf("CABLE 3 SACADO CON EXITO \r\n\n");
feede_dandrea 0:8926c94dcd52 312 chequeo_cable3=1;
feede_dandrea 0:8926c94dcd52 313 } else {
feede_dandrea 0:8926c94dcd52 314 game_state=PERDISTE;
feede_dandrea 0:8926c94dcd52 315 printf("KBOOOM!. HAZ PERDIDO. EL CABLE 3 NO ERA, LO 100TO HEE HEE\n\r");
feede_dandrea 0:8926c94dcd52 316 juego_estado=INICIO;
feede_dandrea 0:8926c94dcd52 317 }
feede_dandrea 0:8926c94dcd52 318 }
feede_dandrea 0:8926c94dcd52 319 if((cable_4==1)&&(chequeo_cable4==0)) { //los cables se sacan una vez por lo tanto solo se puede entrar una vez en este estado, y al primer error se pierde
feede_dandrea 0:8926c94dcd52 320 if(cables[conteo_cables]==3) {
feede_dandrea 0:8926c94dcd52 321 conteo_cables++;//es correcto y se incrementa la variable para buscar el siguiente cable
feede_dandrea 0:8926c94dcd52 322 printf("CABLE 4 SACADO CON EXITO \r\n\n");
feede_dandrea 0:8926c94dcd52 323 chequeo_cable4=1;
feede_dandrea 0:8926c94dcd52 324 } else {
feede_dandrea 0:8926c94dcd52 325 game_state=PERDISTE;
feede_dandrea 0:8926c94dcd52 326 printf("KBOOOM!. HAZ PERDIDO. EL CABLE 4 NO ERA, LO 100TO HEE HEE\n\r");
feede_dandrea 0:8926c94dcd52 327 juego_estado=INICIO;
feede_dandrea 0:8926c94dcd52 328 }
feede_dandrea 0:8926c94dcd52 329 }
feede_dandrea 0:8926c94dcd52 330 if((chequeo_cable1==1)&&(chequeo_cable2==1)&&(chequeo_cable3==1)&&(chequeo_cable4==1)) {
feede_dandrea 0:8926c94dcd52 331 game_state=GANASTE;//cuando los 4 quedan deshabilitados es cuando el jugador gana
feede_dandrea 0:8926c94dcd52 332 juego_estado=INICIO;
feede_dandrea 0:8926c94dcd52 333 }
feede_dandrea 0:8926c94dcd52 334 break;
feede_dandrea 0:8926c94dcd52 335 }
feede_dandrea 0:8926c94dcd52 336
feede_dandrea 0:8926c94dcd52 337 }
feede_dandrea 0:8926c94dcd52 338
feede_dandrea 0:8926c94dcd52 339 int main()
feede_dandrea 0:8926c94dcd52 340 {
feede_dandrea 0:8926c94dcd52 341 rojo=1;
feede_dandrea 0:8926c94dcd52 342 verde=1;
feede_dandrea 0:8926c94dcd52 343 azul=1;//apago todos los leds
feede_dandrea 0:8926c94dcd52 344 juego_estado=INICIO;//inicializo el juego
feede_dandrea 0:8926c94dcd52 345 while(1) {
feede_dandrea 0:8926c94dcd52 346 float v = tsi.readPercentage();
feede_dandrea 0:8926c94dcd52 347 if(comienza_juego==1) {//una vez que esta variable este en 1 el juego queda corriendo, de lo contrario espera a que se deslice con el dedo en el TSI para comenzar.
feede_dandrea 0:8926c94dcd52 348 juego();
feede_dandrea 0:8926c94dcd52 349 } else {
feede_dandrea 0:8926c94dcd52 350 if((v>(float)0.1)&&(v<(float)0.3)) {//efecto de los colores
feede_dandrea 0:8926c94dcd52 351 comienza_juego=0;
feede_dandrea 0:8926c94dcd52 352 rojo=0;
feede_dandrea 0:8926c94dcd52 353 verde=1;
feede_dandrea 0:8926c94dcd52 354 azul=1;
feede_dandrea 0:8926c94dcd52 355 } else if((v>(float)0.3)&&(v<(float)0.6)) {//efecto de los colores
feede_dandrea 0:8926c94dcd52 356 rojo=1;
feede_dandrea 0:8926c94dcd52 357 verde=0;
feede_dandrea 0:8926c94dcd52 358 azul=1;
feede_dandrea 0:8926c94dcd52 359 } else if((v>(float)0.6)&&(v<(float)0.9)) {//efecto de los colores
feede_dandrea 0:8926c94dcd52 360 rojo=1;
feede_dandrea 0:8926c94dcd52 361 verde=1;
feede_dandrea 0:8926c94dcd52 362 azul=0;
feede_dandrea 0:8926c94dcd52 363 } else if((v>=(float)0.9)) {//se resetean las variables para poder iniciar el juego de forma limpia incluso cuando se lo resetee al ganar o perder
feede_dandrea 0:8926c94dcd52 364 rojo=1;
feede_dandrea 0:8926c94dcd52 365 verde=1;
feede_dandrea 0:8926c94dcd52 366 azul=1;
feede_dandrea 0:8926c94dcd52 367 display.detach();
feede_dandrea 0:8926c94dcd52 368 n_generador=0;
feede_dandrea 0:8926c94dcd52 369 chequeo_cable1=0;
feede_dandrea 0:8926c94dcd52 370 chequeo_cable2=0;
feede_dandrea 0:8926c94dcd52 371 chequeo_cable3=0;
feede_dandrea 0:8926c94dcd52 372 chequeo_cable4=0;
feede_dandrea 0:8926c94dcd52 373 cable1_ocupado=0;
feede_dandrea 0:8926c94dcd52 374 cable2_ocupado=0;
feede_dandrea 0:8926c94dcd52 375 cable3_ocupado=0;
feede_dandrea 0:8926c94dcd52 376 cable4_ocupado=0;
feede_dandrea 0:8926c94dcd52 377 conteo_cables=0;
feede_dandrea 0:8926c94dcd52 378 generador=COMIENZO;//inicializa el generador
feede_dandrea 0:8926c94dcd52 379 game_state=COMIENZO;//inicializa las etapas del juego
feede_dandrea 0:8926c94dcd52 380 comienza_juego=1;//habilita el juego corriendo el loop y evita que se pueda volver a usar el TSI hasta que el juego no concluya
feede_dandrea 0:8926c94dcd52 381 juego_estado=INICIO;//inicializa el juego
feede_dandrea 0:8926c94dcd52 382 }
feede_dandrea 0:8926c94dcd52 383 }
feede_dandrea 0:8926c94dcd52 384
feede_dandrea 0:8926c94dcd52 385
feede_dandrea 0:8926c94dcd52 386 }
feede_dandrea 0:8926c94dcd52 387 }