Federico D'Andrea
/
TP-Simon
EJERCICIO 2 -TERMINADO - SOTELO - D´ANDREA
main.cpp@0:852f9baab783, 2019-06-18 (annotated)
- Committer:
- feede_dandrea
- Date:
- Tue Jun 18 13:51:14 2019 +0000
- Revision:
- 0:852f9baab783
EJERCICIO 2 - TERMINADO;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |