Francisco García Ruiz
/
SimonReady
Simon
main.cpp@0:9f7132ea2387, 2019-06-04 (annotated)
- Committer:
- FranciscoGarciaRuiz
- Date:
- Tue Jun 04 13:57:10 2019 +0000
- Revision:
- 0:9f7132ea2387
Simon
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
FranciscoGarciaRuiz | 0:9f7132ea2387 | 1 | #include "mbed.h" |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 2 | #include "tsi_sensor.h" |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 3 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 4 | void intro(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 5 | void me_simon(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 6 | void tiempo(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 7 | void aleatorio(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 8 | void reset_leds(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 9 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 10 | /* This defines will be replaced by PinNames soon */ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 11 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 12 | #define ELEC0 9 |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 13 | #define ELEC1 10 |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 14 | #elif defined (TARGET_KL05Z) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 15 | #define ELEC0 9 |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 16 | #define ELEC1 8 |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 17 | #else |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 18 | #error TARGET NOT DEFINED |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 19 | #endif |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 20 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 21 | enum estados_me_simon {E_random,E_rojo,E_azul,E_verde,E_jugador,E_perdedor,E_ganador,E_reinicio}; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 22 | enum estados_me_simon me_simon_estado=E_random; /*Estado de reset = E_random*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 23 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 24 | enum estados_leds {ON,OFF}; /*ON = 0, OFF = 1*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 25 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 26 | DigitalOut R(LED_RED); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 27 | DigitalOut V(LED_GREEN); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 28 | DigitalOut A(LED_BLUE); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 29 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 30 | #define TLEDS 500 |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 31 | #define SECUENCIAS 10 |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 32 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 33 | float slider; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 34 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 35 | char texto=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 36 | int introduccion=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 37 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 38 | int color[100]; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 39 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 40 | int numero=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 41 | int semilla=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 42 | int memoria=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 43 | int final=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 44 | int tmo=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 45 | int tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 46 | int seleccion=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 47 | int correctas=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 48 | int incorrectas=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 49 | int sliderant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 50 | int seleccionant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 51 | int resultado=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 52 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 53 | Ticker t; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 54 | Ticker a; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 55 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 56 | int main() |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 57 | { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 58 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 59 | reset_leds(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 60 | t.attach(&tiempo, 0.001); /*1ms*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 61 | a.attach(&aleatorio, 0.0001); /*0.1ms*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 62 | intro(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 63 | while(1) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 64 | me_simon(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 65 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 66 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 67 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 68 | /*función de introdución al juego*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 69 | void intro() |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 70 | { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 71 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 72 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 73 | printf("Bienvenido al Simon\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 74 | printf("Quieres aprender a jugar?\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 75 | printf("Slider Izquierdo(Si) o Slider Derecho(No)\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 76 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 77 | while(introduccion==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 78 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 79 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 80 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 81 | if(slider>0.6 && slider<1) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 82 | printf("\nWow pues este jugador debe ser un experto\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 83 | introduccion=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 84 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 85 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 86 | if(slider>0 && slider<0.4) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 87 | printf("\nEl juego consta de apretar los botones correspondientes a cada color en el orden que las secuencias indiquen una vez estas hayan terminado de reproducirse\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 88 | printf("A medida que se hagan correctamente las secuencias se pasara a una secuencia con los mismos colores pero agregando uno al final\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 89 | printf("\nLos botones de los colores son:\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 90 | printf("Rojo---Izquierdo\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 91 | printf("Azul---Medio\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 92 | printf("Verde---Derecho\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 93 | printf("\nUna vez dicho esto...\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 94 | introduccion=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 95 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 96 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 97 | introduccion=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 98 | while(introduccion==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 99 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 100 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 101 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 102 | if(tmoant > 0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 103 | printf("\nSi estas listo, toca el slider\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 104 | tmo=1000; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 105 | tmoant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 106 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 107 | if(slider!=0 && tmo==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 108 | introduccion=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 109 | printf("\nCOMIENZA\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 110 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 111 | while(slider!=0) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 112 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 113 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 114 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 115 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 116 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 117 | /*decrementa tmo cada 1ms*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 118 | void tiempo() |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 119 | { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 120 | if (tmo > 0) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 121 | tmo--; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 122 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 123 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 124 | /*genera numeros aleatorios entre 1 y 3 cada 0.1ms*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 125 | void aleatorio() |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 126 | { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 127 | semilla++; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 128 | if(semilla>=3) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 129 | semilla*=semilla; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 130 | if(semilla>=800) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 131 | semilla=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 132 | srand(semilla); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 133 | numero= rand()%3+1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 134 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 135 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 136 | /*función para apagar los leds*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 137 | void reset_leds() |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 138 | { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 139 | R=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 140 | A=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 141 | V=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 142 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 143 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 144 | /*máquina de estados del simon*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 145 | void me_simon() |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 146 | { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 147 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 148 | switch(me_simon_estado) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 149 | default: |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 150 | case E_random: |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 151 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 152 | /*salidas*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 153 | reset_leds(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 154 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 155 | if(tmoant > 0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 156 | tmoant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 157 | tmo=TLEDS; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 158 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 159 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 160 | /*transición*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 161 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 162 | /*lee los colores generados en las secuencias anteriores*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 163 | if(memoria!=final && tmo==0 && tmoant==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 164 | if(color[memoria]==1) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 165 | me_simon_estado=E_rojo; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 166 | if(color[memoria]==2) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 167 | me_simon_estado=E_azul; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 168 | if(color[memoria]==3) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 169 | me_simon_estado=E_verde; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 170 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 171 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 172 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 173 | /*genera un nuevo color en base a la variable: numero*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 174 | if(memoria==final && tmo==0 && tmoant==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 175 | color[final]=numero; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 176 | if(color[final]==1) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 177 | me_simon_estado=E_rojo; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 178 | if(color[final]==2) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 179 | me_simon_estado=E_azul; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 180 | if(color[final]==3) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 181 | me_simon_estado=E_verde; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 182 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 183 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 184 | break; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 185 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 186 | case E_rojo: |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 187 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 188 | /*salidas*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 189 | R=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 190 | A=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 191 | V=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 192 | if(tmoant > 0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 193 | tmoant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 194 | tmo=TLEDS; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 195 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 196 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 197 | /*transición*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 198 | if(tmo==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 199 | if(memoria==final) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 200 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 201 | memoria=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 202 | me_simon_estado=E_jugador; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 203 | } else { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 204 | me_simon_estado=E_random; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 205 | memoria++; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 206 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 207 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 208 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 209 | break; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 210 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 211 | case E_azul: |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 212 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 213 | /*salidas*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 214 | R=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 215 | A=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 216 | V=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 217 | if(tmoant > 0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 218 | tmoant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 219 | tmo=TLEDS; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 220 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 221 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 222 | /*transición*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 223 | if(tmo==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 224 | if(memoria==final) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 225 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 226 | memoria=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 227 | me_simon_estado=E_jugador; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 228 | } else { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 229 | me_simon_estado=E_random; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 230 | memoria++; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 231 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 232 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 233 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 234 | break; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 235 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 236 | case E_verde: |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 237 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 238 | /*salidas*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 239 | R=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 240 | A=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 241 | V=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 242 | if(tmoant > 0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 243 | tmoant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 244 | tmo=TLEDS; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 245 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 246 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 247 | /*transición*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 248 | if(tmo==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 249 | if(memoria==final) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 250 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 251 | memoria=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 252 | me_simon_estado=E_jugador; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 253 | } else { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 254 | me_simon_estado=E_random; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 255 | memoria++; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 256 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 257 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 258 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 259 | break; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 260 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 261 | case E_jugador: |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 262 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 263 | /*salidas*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 264 | reset_leds(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 265 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 266 | if(tmoant > 0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 267 | tmoant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 268 | tmo=TLEDS; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 269 | final++; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 270 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 271 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 272 | /*transición*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 273 | if(tmo==0 && tmoant==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 274 | while(correctas<final && incorrectas==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 275 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 276 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 277 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 278 | if(slider>0 && slider<0.2 && sliderant==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 279 | seleccion=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 280 | sliderant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 281 | seleccionant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 282 | R=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 283 | while(slider!=0) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 284 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 285 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 286 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 287 | if(slider>0.35 && slider<0.65 && sliderant==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 288 | seleccion=2; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 289 | sliderant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 290 | seleccionant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 291 | A=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 292 | while(slider!=0) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 293 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 294 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 295 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 296 | if(slider>0.8 && slider<1 && sliderant==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 297 | seleccion=3; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 298 | sliderant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 299 | seleccionant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 300 | V=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 301 | while(slider!=0) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 302 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 303 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 304 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 305 | if(slider==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 306 | sliderant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 307 | reset_leds(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 308 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 309 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 310 | if(seleccion!=color[memoria] && seleccionant==0 && seleccion!=0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 311 | incorrectas=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 312 | seleccionant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 313 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 314 | if(seleccion==color[memoria] && seleccionant==0 && seleccion!=0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 315 | correctas++; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 316 | seleccionant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 317 | memoria++; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 318 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 319 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 320 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 321 | if(incorrectas==1) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 322 | me_simon_estado=E_perdedor; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 323 | resultado=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 324 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 325 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 326 | if(correctas==SECUENCIAS && incorrectas==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 327 | me_simon_estado=E_ganador; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 328 | resultado=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 329 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 330 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 331 | if(correctas<SECUENCIAS && incorrectas==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 332 | me_simon_estado=E_random; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 333 | memoria=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 334 | correctas=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 335 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 336 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 337 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 338 | break; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 339 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 340 | case E_ganador: |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 341 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 342 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 343 | if(tmoant > 0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 344 | tmo=TLEDS; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 345 | tmoant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 346 | texto=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 347 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 348 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 349 | if(slider==0) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 350 | sliderant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 351 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 352 | /*salidas*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 353 | if(resultado==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 354 | printf("\nGANASTE\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 355 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 356 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 357 | R=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 358 | A=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 359 | V=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 360 | resultado=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 361 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 362 | /*transición*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 363 | if(tmo==0 && sliderant==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 364 | printf("\nQuieres jugar de nuevo?\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 365 | printf("Toca el slider para reiniciar\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 366 | while(texto==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 367 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 368 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 369 | if(slider>0 && slider<0.4) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 370 | me_simon_estado=E_reinicio; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 371 | printf("\nPreparate...\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 372 | printf("Toca el slider cuando estes listo\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 373 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 374 | texto=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 375 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 376 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 377 | break; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 378 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 379 | case E_perdedor: |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 380 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 381 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 382 | if(tmoant > 0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 383 | tmo=TLEDS; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 384 | tmoant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 385 | texto=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 386 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 387 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 388 | if(slider==0) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 389 | sliderant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 390 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 391 | /*salidas*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 392 | if(resultado==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 393 | printf("\nPERDISTE\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 394 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 395 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 396 | R=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 397 | A=ON; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 398 | V=OFF; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 399 | resultado=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 400 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 401 | /*transición*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 402 | if(tmo==0 && sliderant==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 403 | printf("\nReintentar?\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 404 | printf("Toca el slider para reiniciar\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 405 | while(texto==0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 406 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 407 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 408 | if(slider>0 && slider<0.4) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 409 | me_simon_estado=E_reinicio; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 410 | printf("\nPreparate...\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 411 | printf("Toca el slider cuando estes listo\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 412 | texto=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 413 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 414 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 415 | break; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 416 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 417 | case E_reinicio: |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 418 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 419 | /*salidas*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 420 | reset_leds(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 421 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 422 | memoria=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 423 | final=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 424 | tmo=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 425 | tmoant=1; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 426 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 427 | seleccion=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 428 | correctas=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 429 | incorrectas=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 430 | sliderant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 431 | seleccionant=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 432 | resultado=0; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 433 | |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 434 | /*transición*/ |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 435 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 436 | if(slider!=0) { |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 437 | printf("\nCOMIENZA\n\r"); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 438 | me_simon_estado=E_random; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 439 | while(slider!=0) |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 440 | slider = tsi.readPercentage(); |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 441 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 442 | break; |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 443 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 444 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 445 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 446 | } |
FranciscoGarciaRuiz | 0:9f7132ea2387 | 447 | } |