EJERCICIO 2 -TERMINADO - SOTELO - D´ANDREA

Dependencies:   mbed tsi_sensor

Committer:
feede_dandrea
Date:
Tue Jun 18 13:51:14 2019 +0000
Revision:
0:852f9baab783
EJERCICIO 2 - TERMINADO;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
feede_dandrea 0:852f9baab783 1 //TRABAJO PRACTICO 1 - SIMON
feede_dandrea 0:852f9baab783 2
feede_dandrea 0:852f9baab783 3 #include "mbed.h"
feede_dandrea 0:852f9baab783 4 #include <stdlib.h> /* srand, rand */
feede_dandrea 0:852f9baab783 5 #include <time.h> /* time */
feede_dandrea 0:852f9baab783 6 #include "tsi_sensor.h"
feede_dandrea 0:852f9baab783 7
feede_dandrea 0:852f9baab783 8
feede_dandrea 0:852f9baab783 9 /* This defines will be replaced by PinNames soon */
feede_dandrea 0:852f9baab783 10 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
feede_dandrea 0:852f9baab783 11 #define ELEC0 9
feede_dandrea 0:852f9baab783 12 #define ELEC1 10
feede_dandrea 0:852f9baab783 13 #elif defined (TARGET_KL05Z)
feede_dandrea 0:852f9baab783 14 #define ELEC0 9
feede_dandrea 0:852f9baab783 15 #define ELEC1 8
feede_dandrea 0:852f9baab783 16 #else
feede_dandrea 0:852f9baab783 17 #error TARGET NOT DEFINED
feede_dandrea 0:852f9baab783 18 #endif
feede_dandrea 0:852f9baab783 19
feede_dandrea 0:852f9baab783 20
feede_dandrea 0:852f9baab783 21
feede_dandrea 0:852f9baab783 22 TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
feede_dandrea 0:852f9baab783 23
feede_dandrea 0:852f9baab783 24
feede_dandrea 0:852f9baab783 25
feede_dandrea 0:852f9baab783 26 AnalogIn aleatorio(PTB0);
feede_dandrea 0:852f9baab783 27
feede_dandrea 0:852f9baab783 28 DigitalOut rojo(LED_RED); //Definimos como salidas los leds
feede_dandrea 0:852f9baab783 29 DigitalOut azul(LED_BLUE);
feede_dandrea 0:852f9baab783 30 DigitalOut verde(LED_GREEN);
feede_dandrea 0:852f9baab783 31
feede_dandrea 0:852f9baab783 32 Ticker resultado;
feede_dandrea 0:852f9baab783 33
feede_dandrea 0:852f9baab783 34 Ticker gameplay;
feede_dandrea 0:852f9baab783 35
feede_dandrea 0:852f9baab783 36 Ticker sensor;
feede_dandrea 0:852f9baab783 37
feede_dandrea 0:852f9baab783 38 void juego(); //Esta funcion va a manejar el juego
feede_dandrea 0:852f9baab783 39 void indicador_fin_funcion(); //Esta funcion es para el control de leds
feede_dandrea 0:852f9baab783 40 void llenado_vector(); //Esta funcion va a guardar los diferentes colores para el juego
feede_dandrea 0:852f9baab783 41
feede_dandrea 0:852f9baab783 42 int llenado_vector_estado=0,indicador_fin_estado=0,game_over=0,juego_estado,luces_color=0,tiempo_On=0,incremento=0,nivel_max=24,espera=0;
feede_dandrea 0:852f9baab783 43
feede_dandrea 0:852f9baab783 44
feede_dandrea 0:852f9baab783 45
feede_dandrea 0:852f9baab783 46 char luces[23]; //Vector donde se guardan todos los colores del juego
feede_dandrea 0:852f9baab783 47 enum {INICIO,ALEATORIO,LLENADO};
feede_dandrea 0:852f9baab783 48 enum {R,G,B};
feede_dandrea 0:852f9baab783 49
feede_dandrea 0:852f9baab783 50 enum {NO_PIERDO, PERDISTE,SIGUIENTE_NIVEL, GANASTE};
feede_dandrea 0:852f9baab783 51
feede_dandrea 0:852f9baab783 52 enum {APAGADO,ENCENDIDO};
feede_dandrea 0:852f9baab783 53 char indicador_fin;
feede_dandrea 0:852f9baab783 54
feede_dandrea 0:852f9baab783 55 enum {DEFAULT, ACTUAL, RESPUESTA};
feede_dandrea 0:852f9baab783 56 enum {COMIENZO,GANADOR,PERDEDOR};
feede_dandrea 0:852f9baab783 57
feede_dandrea 0:852f9baab783 58 enum {NO_TOCO,TOCO};
feede_dandrea 0:852f9baab783 59 int titileo=0,tocaste_tsi=0;
feede_dandrea 0:852f9baab783 60
feede_dandrea 0:852f9baab783 61 int nivel;
feede_dandrea 0:852f9baab783 62 volatile int u=0;
feede_dandrea 0:852f9baab783 63
feede_dandrea 0:852f9baab783 64 int n=0,c=0, k=0, j=0,lose=0,comienzo_slider=0;
feede_dandrea 0:852f9baab783 65 int main()
feede_dandrea 0:852f9baab783 66 {
feede_dandrea 0:852f9baab783 67 rojo=1;
feede_dandrea 0:852f9baab783 68 azul=1;
feede_dandrea 0:852f9baab783 69 verde=1;
feede_dandrea 0:852f9baab783 70 juego_estado = DEFAULT; //Seteamos en el estado de Default ya que es el reset del juego
feede_dandrea 0:852f9baab783 71 while(1) {
feede_dandrea 0:852f9baab783 72 float d = tsi.readPercentage(); //Lee el tsi para iniciar el juego
feede_dandrea 0:852f9baab783 73 if(comienzo_slider<3){ //Para comenzar el juego se desliza el dedo sobre el tsi,entonces va detectando de a rangos
feede_dandrea 0:852f9baab783 74 if((d>(float)0.1)&&(d<(float)0.3)){ //Mientras se desliza el dedo hay un juego e luces con los colores del led
feede_dandrea 0:852f9baab783 75 rojo=0;
feede_dandrea 0:852f9baab783 76 verde=1;
feede_dandrea 0:852f9baab783 77 azul=1;
feede_dandrea 0:852f9baab783 78 }
feede_dandrea 0:852f9baab783 79 else if((d>(float)0.3)&&(d<(float)0.6)){
feede_dandrea 0:852f9baab783 80 rojo=1;
feede_dandrea 0:852f9baab783 81 verde=0;
feede_dandrea 0:852f9baab783 82 azul=1;
feede_dandrea 0:852f9baab783 83 }
feede_dandrea 0:852f9baab783 84 else if((d>(float)0.6)&&(d<(float)0.9)){
feede_dandrea 0:852f9baab783 85 rojo=1;
feede_dandrea 0:852f9baab783 86 verde=1;
feede_dandrea 0:852f9baab783 87 azul=0;
feede_dandrea 0:852f9baab783 88 }
feede_dandrea 0:852f9baab783 89 else if((d>=(float)0.9)){
feede_dandrea 0:852f9baab783 90 rojo=1;
feede_dandrea 0:852f9baab783 91 verde=1;
feede_dandrea 0:852f9baab783 92 azul=1;
feede_dandrea 0:852f9baab783 93 }
feede_dandrea 0:852f9baab783 94 }
feede_dandrea 0:852f9baab783 95 if(d==(float)0 && (comienzo_slider==0)){
feede_dandrea 0:852f9baab783 96 comienzo_slider=1;
feede_dandrea 0:852f9baab783 97 }
feede_dandrea 0:852f9baab783 98 if((d>(float)0.3) && (d<(float)0.7) && (comienzo_slider==1)){
feede_dandrea 0:852f9baab783 99 comienzo_slider=2;
feede_dandrea 0:852f9baab783 100 }
feede_dandrea 0:852f9baab783 101 if((d>(float)0.9) && (d<(float)0.99) && (comienzo_slider==2)){
feede_dandrea 0:852f9baab783 102 rojo=1;
feede_dandrea 0:852f9baab783 103 verde=1;
feede_dandrea 0:852f9baab783 104 azul=1;
feede_dandrea 0:852f9baab783 105 printf("QUE COMIENCE EL JUEGO!\r\n\n");
feede_dandrea 0:852f9baab783 106 d=0;
feede_dandrea 0:852f9baab783 107 comienzo_slider=3;
feede_dandrea 0:852f9baab783 108 }
feede_dandrea 0:852f9baab783 109
feede_dandrea 0:852f9baab783 110 if(comienzo_slider==3){
feede_dandrea 0:852f9baab783 111 juego();
feede_dandrea 0:852f9baab783 112 }
feede_dandrea 0:852f9baab783 113 if(titileo==4) {
feede_dandrea 0:852f9baab783 114 resultado.detach();
feede_dandrea 0:852f9baab783 115 comienzo_slider=0;
feede_dandrea 0:852f9baab783 116 titileo=0;
feede_dandrea 0:852f9baab783 117 game_over=COMIENZO;
feede_dandrea 0:852f9baab783 118 nivel=0;
feede_dandrea 0:852f9baab783 119 }
feede_dandrea 0:852f9baab783 120 }
feede_dandrea 0:852f9baab783 121 }
feede_dandrea 0:852f9baab783 122 void llenado_vector() //elije un numero aleatorio del 0 al 2 y crea un vector con una secuencia de colores
feede_dandrea 0:852f9baab783 123 {
feede_dandrea 0:852f9baab783 124 switch(llenado_vector_estado) {
feede_dandrea 0:852f9baab783 125 case INICIO:
feede_dandrea 0:852f9baab783 126 srand(int(aleatorio * 1000));
feede_dandrea 0:852f9baab783 127 if(n<nivel_max) {
feede_dandrea 0:852f9baab783 128 llenado_vector_estado = ALEATORIO; //se van creando numeros aleatorios hasta que el vector se llene
feede_dandrea 0:852f9baab783 129 }
feede_dandrea 0:852f9baab783 130 break;
feede_dandrea 0:852f9baab783 131
feede_dandrea 0:852f9baab783 132 case ALEATORIO:
feede_dandrea 0:852f9baab783 133 c=rand()%3;
feede_dandrea 0:852f9baab783 134 llenado_vector_estado = LLENADO;
feede_dandrea 0:852f9baab783 135 break;
feede_dandrea 0:852f9baab783 136
feede_dandrea 0:852f9baab783 137 case LLENADO:
feede_dandrea 0:852f9baab783 138 luces_color=c;
feede_dandrea 0:852f9baab783 139 if(n<nivel_max) {//se lo diferencia entre los 3 colores y se lo asigna al vector
feede_dandrea 0:852f9baab783 140 if(luces_color==R) {
feede_dandrea 0:852f9baab783 141 luces[n]='R';
feede_dandrea 0:852f9baab783 142 }
feede_dandrea 0:852f9baab783 143
feede_dandrea 0:852f9baab783 144 if(luces_color==G) {
feede_dandrea 0:852f9baab783 145 luces[n]='G';
feede_dandrea 0:852f9baab783 146 }
feede_dandrea 0:852f9baab783 147
feede_dandrea 0:852f9baab783 148 if(luces_color==B) {
feede_dandrea 0:852f9baab783 149 luces[n]='B';
feede_dandrea 0:852f9baab783 150 }
feede_dandrea 0:852f9baab783 151 n++;//lleva la cuenta de la posicion del vector
feede_dandrea 0:852f9baab783 152 llenado_vector_estado = ALEATORIO;
feede_dandrea 0:852f9baab783 153 } else {
feede_dandrea 0:852f9baab783 154 llenado_vector_estado = INICIO;
feede_dandrea 0:852f9baab783 155 }
feede_dandrea 0:852f9baab783 156 break;
feede_dandrea 0:852f9baab783 157 }
feede_dandrea 0:852f9baab783 158 }
feede_dandrea 0:852f9baab783 159
feede_dandrea 0:852f9baab783 160 void indicador_fin_funcion()
feede_dandrea 0:852f9baab783 161 {
feede_dandrea 0:852f9baab783 162 switch(indicador_fin_estado) {
feede_dandrea 0:852f9baab783 163 case APAGADO:
feede_dandrea 0:852f9baab783 164 if(indicador_fin=='R') {
feede_dandrea 0:852f9baab783 165 rojo=1;
feede_dandrea 0:852f9baab783 166 }
feede_dandrea 0:852f9baab783 167 if(indicador_fin=='G') {
feede_dandrea 0:852f9baab783 168 verde=1;
feede_dandrea 0:852f9baab783 169 }
feede_dandrea 0:852f9baab783 170 indicador_fin_estado=ENCENDIDO;
feede_dandrea 0:852f9baab783 171 titileo++;
feede_dandrea 0:852f9baab783 172 break;
feede_dandrea 0:852f9baab783 173 case ENCENDIDO:
feede_dandrea 0:852f9baab783 174 if(indicador_fin=='R') {
feede_dandrea 0:852f9baab783 175 rojo=0;
feede_dandrea 0:852f9baab783 176 }
feede_dandrea 0:852f9baab783 177 if(indicador_fin=='G') {
feede_dandrea 0:852f9baab783 178 verde=0;
feede_dandrea 0:852f9baab783 179 }
feede_dandrea 0:852f9baab783 180 indicador_fin_estado=APAGADO;
feede_dandrea 0:852f9baab783 181 break;
feede_dandrea 0:852f9baab783 182 }
feede_dandrea 0:852f9baab783 183 }
feede_dandrea 0:852f9baab783 184
feede_dandrea 0:852f9baab783 185 void muestra()//lee el vector hasta el nivel asignado
feede_dandrea 0:852f9baab783 186 {
feede_dandrea 0:852f9baab783 187 tiempo_On++;//se utiliza para contabilizar el tiempo y poder apagar los leds al finalizar
feede_dandrea 0:852f9baab783 188 if(tiempo_On==2) {
feede_dandrea 0:852f9baab783 189 rojo=1;
feede_dandrea 0:852f9baab783 190 verde=1;
feede_dandrea 0:852f9baab783 191 azul=1;
feede_dandrea 0:852f9baab783 192 tiempo_On=0;
feede_dandrea 0:852f9baab783 193 }
feede_dandrea 0:852f9baab783 194 if((u<(nivel+2))&&(tiempo_On==1)) {
feede_dandrea 0:852f9baab783 195 if(luces[u]=='R') {
feede_dandrea 0:852f9baab783 196 rojo=0;
feede_dandrea 0:852f9baab783 197 verde=1;
feede_dandrea 0:852f9baab783 198 azul=1;
feede_dandrea 0:852f9baab783 199 }
feede_dandrea 0:852f9baab783 200 if(luces[u]=='G') {
feede_dandrea 0:852f9baab783 201 rojo=1;
feede_dandrea 0:852f9baab783 202 verde=0;
feede_dandrea 0:852f9baab783 203 azul=1;
feede_dandrea 0:852f9baab783 204 }
feede_dandrea 0:852f9baab783 205 if(luces[u]=='B') {
feede_dandrea 0:852f9baab783 206 rojo=1;
feede_dandrea 0:852f9baab783 207 verde=1;
feede_dandrea 0:852f9baab783 208 azul=0;
feede_dandrea 0:852f9baab783 209 }
feede_dandrea 0:852f9baab783 210 u++;
feede_dandrea 0:852f9baab783 211 }
feede_dandrea 0:852f9baab783 212 if(u==(nivel+1)) {
feede_dandrea 0:852f9baab783 213 rojo=1;
feede_dandrea 0:852f9baab783 214 verde=1;
feede_dandrea 0:852f9baab783 215 azul=1;
feede_dandrea 0:852f9baab783 216 }
feede_dandrea 0:852f9baab783 217 }
feede_dandrea 0:852f9baab783 218
feede_dandrea 0:852f9baab783 219 void leer_tsi()
feede_dandrea 0:852f9baab783 220 {
feede_dandrea 0:852f9baab783 221
feede_dandrea 0:852f9baab783 222 float v = tsi.readPercentage();
feede_dandrea 0:852f9baab783 223
feede_dandrea 0:852f9baab783 224 if(j==nivel) {
feede_dandrea 0:852f9baab783 225 if(nivel==nivel_max) {
feede_dandrea 0:852f9baab783 226 lose=GANASTE;//si el nivel es maximo se gana
feede_dandrea 0:852f9baab783 227 } else {
feede_dandrea 0:852f9baab783 228 lose=SIGUIENTE_NIVEL;//j que es quien detecta color por color detecta que llego al nivel actual, envia al siguiente nivel
feede_dandrea 0:852f9baab783 229 incremento=1;
feede_dandrea 0:852f9baab783 230 }
feede_dandrea 0:852f9baab783 231 }
feede_dandrea 0:852f9baab783 232 if((v>=(float)0.05 )&& (v<=(float)0.33) && (tocaste_tsi==NO_TOCO)) { //Rojo, si el color que se toca es rojo y no coincide con el vector significa que esta mal y perdio, de lo contrario es correcto y sigue con el juego
feede_dandrea 0:852f9baab783 233 if(luces[j]=='R') {
feede_dandrea 0:852f9baab783 234 j++;
feede_dandrea 0:852f9baab783 235 printf("COLOR SELECCIONADO ROJO \r\n\n");
feede_dandrea 0:852f9baab783 236 v=0;
feede_dandrea 0:852f9baab783 237 azul=1;
feede_dandrea 0:852f9baab783 238 rojo=0;
feede_dandrea 0:852f9baab783 239 verde=1;
feede_dandrea 0:852f9baab783 240 espera=0;
feede_dandrea 0:852f9baab783 241 tocaste_tsi=TOCO;
feede_dandrea 0:852f9baab783 242 } else {
feede_dandrea 0:852f9baab783 243 azul=1;
feede_dandrea 0:852f9baab783 244 rojo=0;
feede_dandrea 0:852f9baab783 245 verde=1;
feede_dandrea 0:852f9baab783 246 lose=PERDISTE;
feede_dandrea 0:852f9baab783 247 printf("HAZ PERDIDO. EL ROJO NO ERA, LO 100TO\n\r");
feede_dandrea 0:852f9baab783 248 }
feede_dandrea 0:852f9baab783 249 } else if((v>=(float)0.40 )&& (v<=(float)0.60) && (tocaste_tsi==NO_TOCO)) { //Verde, si el color que se toca es verde y no coincide con el vector significa que esta mal y perdio, de lo contrario es correcto y sigue con el juego
feede_dandrea 0:852f9baab783 250 if(luces[j]=='G') {
feede_dandrea 0:852f9baab783 251 j++;
feede_dandrea 0:852f9baab783 252 printf("COLOR SELECCIONADO VERDE \r\n\n");
feede_dandrea 0:852f9baab783 253 v=0;
feede_dandrea 0:852f9baab783 254 azul=1;
feede_dandrea 0:852f9baab783 255 rojo=1;
feede_dandrea 0:852f9baab783 256 verde=0;
feede_dandrea 0:852f9baab783 257 espera=0;
feede_dandrea 0:852f9baab783 258 tocaste_tsi=TOCO;
feede_dandrea 0:852f9baab783 259 } else {
feede_dandrea 0:852f9baab783 260 azul=1;
feede_dandrea 0:852f9baab783 261 rojo=1;
feede_dandrea 0:852f9baab783 262 verde=0;
feede_dandrea 0:852f9baab783 263 printf("HAZ PERDIDO. EL VERDE NO ERA, LO 100TO\n\r");
feede_dandrea 0:852f9baab783 264 lose=PERDISTE;
feede_dandrea 0:852f9baab783 265 }
feede_dandrea 0:852f9baab783 266 } else if((v>=(float)0.70 )&& (v<=(float)0.98) && (tocaste_tsi==NO_TOCO)) { //Azul, si el color que se toca es azul y no coincide con el vector significa que esta mal y perdio, de lo contrario es correcto y sigue con el juego
feede_dandrea 0:852f9baab783 267 if(luces[j]=='B') {
feede_dandrea 0:852f9baab783 268 j++;
feede_dandrea 0:852f9baab783 269 printf("COLOR SELECCIONADO AZUL \r\n\n");
feede_dandrea 0:852f9baab783 270 v=0;
feede_dandrea 0:852f9baab783 271 azul=0;
feede_dandrea 0:852f9baab783 272 rojo=1;
feede_dandrea 0:852f9baab783 273 verde=1;
feede_dandrea 0:852f9baab783 274 espera=0;
feede_dandrea 0:852f9baab783 275 tocaste_tsi=TOCO;
feede_dandrea 0:852f9baab783 276 } else {
feede_dandrea 0:852f9baab783 277 azul=0;
feede_dandrea 0:852f9baab783 278 rojo=1;
feede_dandrea 0:852f9baab783 279 verde=1;
feede_dandrea 0:852f9baab783 280 printf("HAZ PERDIDO. EL AZUL NO ERA, LO 100TO\n\r");
feede_dandrea 0:852f9baab783 281 lose=PERDISTE;
feede_dandrea 0:852f9baab783 282 }
feede_dandrea 0:852f9baab783 283 }
feede_dandrea 0:852f9baab783 284 else if(v==(float)0){
feede_dandrea 0:852f9baab783 285 tocaste_tsi=NO_TOCO;
feede_dandrea 0:852f9baab783 286
feede_dandrea 0:852f9baab783 287 }
feede_dandrea 0:852f9baab783 288
feede_dandrea 0:852f9baab783 289 if(lose==NO_PIERDO){
feede_dandrea 0:852f9baab783 290 if(espera==1){
feede_dandrea 0:852f9baab783 291 azul=1;
feede_dandrea 0:852f9baab783 292 rojo=1;
feede_dandrea 0:852f9baab783 293 verde=1;
feede_dandrea 0:852f9baab783 294 espera=0;
feede_dandrea 0:852f9baab783 295 }
feede_dandrea 0:852f9baab783 296 else{
feede_dandrea 0:852f9baab783 297 espera++;
feede_dandrea 0:852f9baab783 298 }
feede_dandrea 0:852f9baab783 299 }
feede_dandrea 0:852f9baab783 300 else if(lose==PERDISTE) {
feede_dandrea 0:852f9baab783 301 azul=1;
feede_dandrea 0:852f9baab783 302 rojo=1;
feede_dandrea 0:852f9baab783 303 verde=1;
feede_dandrea 0:852f9baab783 304 j=0;
feede_dandrea 0:852f9baab783 305 sensor.detach();//deja de leer el tsi
feede_dandrea 0:852f9baab783 306 game_over=PERDEDOR;
feede_dandrea 0:852f9baab783 307 juego_estado=DEFAULT;//vuelve al inicio
feede_dandrea 0:852f9baab783 308 lose=NO_PIERDO;
feede_dandrea 0:852f9baab783 309 printf("FIN DE LA PARTIDA\r\n\n");
feede_dandrea 0:852f9baab783 310 }
feede_dandrea 0:852f9baab783 311 else if(lose==SIGUIENTE_NIVEL) {
feede_dandrea 0:852f9baab783 312 azul=1;
feede_dandrea 0:852f9baab783 313 rojo=1;
feede_dandrea 0:852f9baab783 314 verde=1;
feede_dandrea 0:852f9baab783 315 u=0;
feede_dandrea 0:852f9baab783 316 gameplay.attach(&muestra, 0.35);//muestra los colores hasta el nivel actual
feede_dandrea 0:852f9baab783 317 sensor.detach();//deja de leer el tsi
feede_dandrea 0:852f9baab783 318 juego_estado=ACTUAL;//lleva a incrementar el nivel
feede_dandrea 0:852f9baab783 319 j=0;
feede_dandrea 0:852f9baab783 320 lose=NO_PIERDO;
feede_dandrea 0:852f9baab783 321 printf("\nASCIENDES AL NIVEL %d!\r\n", (nivel+1));
feede_dandrea 0:852f9baab783 322 }
feede_dandrea 0:852f9baab783 323 else if(lose==GANASTE) {
feede_dandrea 0:852f9baab783 324 azul=1;
feede_dandrea 0:852f9baab783 325 rojo=1;
feede_dandrea 0:852f9baab783 326 verde=1;
feede_dandrea 0:852f9baab783 327 j=0;
feede_dandrea 0:852f9baab783 328 sensor.detach();//deja de leer el tsi
feede_dandrea 0:852f9baab783 329 game_over=GANADOR;
feede_dandrea 0:852f9baab783 330 juego_estado=DEFAULT;//vuelve al inicio
feede_dandrea 0:852f9baab783 331 lose=NO_PIERDO;
feede_dandrea 0:852f9baab783 332 printf("\n\nGANASTE!\r\n\n");
feede_dandrea 0:852f9baab783 333 }
feede_dandrea 0:852f9baab783 334 }
feede_dandrea 0:852f9baab783 335
feede_dandrea 0:852f9baab783 336
feede_dandrea 0:852f9baab783 337 void juego()
feede_dandrea 0:852f9baab783 338 {
feede_dandrea 0:852f9baab783 339 switch(juego_estado) {
feede_dandrea 0:852f9baab783 340 case DEFAULT:
feede_dandrea 0:852f9baab783 341 if(game_over==COMIENZO) {
feede_dandrea 0:852f9baab783 342 nivel=0;
feede_dandrea 0:852f9baab783 343 llenado_vector();
feede_dandrea 0:852f9baab783 344 if(n==nivel_max) {//cuando se llega al nivel maximo
feede_dandrea 0:852f9baab783 345 juego_estado=ACTUAL;
feede_dandrea 0:852f9baab783 346 u=0;
feede_dandrea 0:852f9baab783 347 gameplay.attach(&muestra, 0.35);
feede_dandrea 0:852f9baab783 348 incremento=1;
feede_dandrea 0:852f9baab783 349 }
feede_dandrea 0:852f9baab783 350 }
feede_dandrea 0:852f9baab783 351 if(game_over==GANADOR) {
feede_dandrea 0:852f9baab783 352 titileo=0;
feede_dandrea 0:852f9baab783 353 indicador_fin='G';//indica el led verde
feede_dandrea 0:852f9baab783 354 resultado.attach(&indicador_fin_funcion, 0.5);//activa el indicador
feede_dandrea 0:852f9baab783 355 game_over=6;
feede_dandrea 0:852f9baab783 356 }
feede_dandrea 0:852f9baab783 357 if(game_over==PERDEDOR) {
feede_dandrea 0:852f9baab783 358 titileo=0;
feede_dandrea 0:852f9baab783 359 indicador_fin='R';//indica el led rojo
feede_dandrea 0:852f9baab783 360 resultado.attach(&indicador_fin_funcion, 0.5);//activa el indicador
feede_dandrea 0:852f9baab783 361 game_over=6;
feede_dandrea 0:852f9baab783 362 }
feede_dandrea 0:852f9baab783 363 break;
feede_dandrea 0:852f9baab783 364 case ACTUAL:
feede_dandrea 0:852f9baab783 365 if(incremento==1) {
feede_dandrea 0:852f9baab783 366 nivel++;//aumenta de nivel
feede_dandrea 0:852f9baab783 367 incremento=0;
feede_dandrea 0:852f9baab783 368 }
feede_dandrea 0:852f9baab783 369 if(u==(nivel+1)) {//continua con el nivel siguiente y espera la espuesta
feede_dandrea 0:852f9baab783 370 gameplay.detach();
feede_dandrea 0:852f9baab783 371 sensor.attach(&leer_tsi,0.05);
feede_dandrea 0:852f9baab783 372 juego_estado=RESPUESTA;
feede_dandrea 0:852f9baab783 373 }
feede_dandrea 0:852f9baab783 374 break;
feede_dandrea 0:852f9baab783 375 case RESPUESTA:
feede_dandrea 0:852f9baab783 376 //estado de reposo
feede_dandrea 0:852f9baab783 377 break;
feede_dandrea 0:852f9baab783 378 }
feede_dandrea 0:852f9baab783 379 }