Simon

Dependencies:   mbed tsi_sensor

Committer:
FranciscoGarciaRuiz
Date:
Tue Jun 04 13:57:10 2019 +0000
Revision:
0:9f7132ea2387
Simon

Who changed what in which revision?

UserRevisionLine numberNew 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 }