Nicolás Almaraz
/
TP1_Ejer3
Diff: main.cpp
- Revision:
- 1:917b402c9b00
- Parent:
- 0:10701585113f
- Child:
- 2:88b9ec493af4
--- a/main.cpp Tue Jun 11 18:57:49 2019 +0000 +++ b/main.cpp Sat Jun 15 22:02:38 2019 +0000 @@ -27,6 +27,7 @@ void displays(); void reset_variables(); void analizo_cables(); +void actualizar_valores_display (); DigitalIn reset(PTE1); DigitalIn cable_0(PTD1); @@ -58,60 +59,61 @@ i++; if((cable_0+cable_1+cable_2+cable_3!=4)&&(mostrado==0)) { mostrado=1; - printf("Deben estar todos los cables conectados para poder empezar a jugar\r\n"); + printf("\r\nDeben estar todos los cables conectados para poder empezar a jugar\r\n"); } if((reset==0)&&(cable_0+cable_1+cable_2+cable_3==4)) { srand(i); - printf("Desconecte los cables en el orden correcto para desactivar la bomba\r\n"); + printf("\r\nDesconecte los cables en el orden correcto para desactivar la bomba\r\n"); printf("Tienes 20 segundos antes de que la bomba explete!\r\n"); //Reinicio todas las variables necesarias para un juego nuevo - bomba=1; + bomba=2; mostrado=0; reset_variables(); + generar_patron(); + printf("\r\nPatron:\r\n"); + printf("%d\r\n",patron[0]); + printf("%d\r\n",patron[1]); + printf("%d\r\n",patron[2]); + printf("%d\r\n",patron[3]); } break; - case 1://Genero el patron - generar_patron(); - //printf("%d\r\n",patron[0]); - //printf("%d\r\n",patron[1]); - //printf("%d\r\n",patron[2]); - //printf("%d\r\n",patron[3]); - bomba=2; - break; case 2://Me fijo si se desconectó algún cable o si se terminó el tiempo analizo_cables(); if(usuario[ingreso]!=4) bomba=3; //Si terminó el tiempo levanto el flag "perder" if(segundos==0) { - printf("Se acabo el tiempo! La bomba exploto\r\n"); - perder=1; + printf("\r\nSe acabo el tiempo! La bomba exploto\r\n"); bomba=3; } break; case 3://Analizo el dato ingresado + //Si ingresé un cable mal + if((usuario[ingreso]!=patron[ingreso])||(segundos==0)) { + //Si el dato es incorrecto levanto el flag "perder" + perder=1; + if(segundos!=0) + printf("\r\nCable Incorrecto! La bomba exploto\r\n"); + } //Si el dato es correcto sumo la variable "ingreso" - if(usuario[ingreso]==patron[ingreso]) { + if((usuario[ingreso]==patron[ingreso]) && (segundos)) { ingreso++; - printf("Correcto\r\n"); + printf("Cable Correcto\r\n"); //Si ingresé los 4 datos bien levanto el flag "ganar" if(ingreso==4) { ganar=1; - printf("Buen trabajo, la bomba fue desactivada!\r\n"); + printf("\r\nBuen trabajo, la bomba fue desactivada!\r\n"); } else bomba=2; - } else { - //Si el dato es incorrecto levanto el flag "perder" - perder=1; - if(segundos!=0) - printf("Cable Incorrecto! La bomba exploto\r\n"); } if(ganar||perder) { //Si terminó el juego indico que deben parpadear los indicadores con el flag "parpadeo" printf("Presione el pulsador Reset para volver a jugar\r\n"); parpadeo=1; tiempo_parpadeo=0; + mili_segundos_display=0; bomba=0; + printf("\r\n--------------------------------------------------------\r\n"); } break; } @@ -189,27 +191,42 @@ } } -void displays() -//Se encarga de mostrar el tiempo en el display -{ +void actualizar_valores_display () { //Separo en decenas y unidades unidades=segundos%10; decenas=segundos/10; //Codifico los valores en 7 segmentos unidades=codificacion(unidades); - decenas=codificacion(decenas); + decenas=codificacion(decenas); +} + +void displays() +//Se encarga de mostrar el tiempo en el display +{ + static char estado_display=0; //Switcheo cada 10ms entre decenas y unidade - if(mili_segundos_display==10) { - if(habilitacion_unidades==0) { - habilitacion_unidades=1; - habilitacion_decenas=0; + switch (estado_display) { + default: + case 0: display=unidades; - } else { - habilitacion_unidades=0; - habilitacion_decenas=1; + if(mili_segundos_display==5) { + habilitacion_unidades=0; + habilitacion_decenas=1; + mili_segundos_display=0; + actualizar_valores_display(); + estado_display=1; + } + break; + case 1: display=decenas; - } - mili_segundos_display=0; + if(mili_segundos_display==5) { + habilitacion_unidades=1; + habilitacion_decenas=0; + mili_segundos_display=0; + actualizar_valores_display(); + estado_display=0; + } + break; } } @@ -233,10 +250,8 @@ default: case 0://Enciendo el display y el led que corresponde displays(); - if(ganar) - led_verde=1; - if(perder) - led_rojo=1; + led_verde=ganar; + led_rojo=perder; //Espero 0.5 segundos y cambio de estado if(tiempo_parpadeo==500) { estado_parpadeo=1; @@ -261,21 +276,21 @@ if((cable_0==0)&&(cable_0_verificacion==0)) { usuario[ingreso]=0; cable_0_verificacion=1; - printf("Cable 0 desconectado\r\n"); + printf("\r\nCable 0 desconectado\r\n"); } if((cable_1==0)&&(cable_1_verificacion==0)) { usuario[ingreso]=1; cable_1_verificacion=1; - printf("Cable 1 desconectado\r\n"); + printf("\r\nCable 1 desconectado\r\n"); } if((cable_2==0)&&(cable_2_verificacion==0)) { usuario[ingreso]=2; cable_2_verificacion=1; - printf("Cable 2 desconectado\r\n"); + printf("\r\nCable 2 desconectado\r\n"); } if((cable_3==0)&&(cable_3_verificacion==0)) { usuario[ingreso]=3; cable_3_verificacion=1; - printf("Cable 3 desconectado\r\n"); + printf("\r\nCable 3 desconectado\r\n"); } } \ No newline at end of file