Pio IX Jalle Ventiades 6b 2019
Dependencies: mbed tsi_sensor MMA8451Q
main.cpp@0:ad5829ebd588, 2019-06-23 (annotated)
- Committer:
- Jalle
- Date:
- Sun Jun 23 13:43:37 2019 +0000
- Revision:
- 0:ad5829ebd588
Pio IX Jalle Ventiades 6b 2019
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jalle | 0:ad5829ebd588 | 1 | #include "mbed.h" |
Jalle | 0:ad5829ebd588 | 2 | #include "tsi_sensor.h" |
Jalle | 0:ad5829ebd588 | 3 | #include "MMA8451Q.h" |
Jalle | 0:ad5829ebd588 | 4 | #include "math.h" |
Jalle | 0:ad5829ebd588 | 5 | |
Jalle | 0:ad5829ebd588 | 6 | DigitalOut ledazul(LED_BLUE); |
Jalle | 0:ad5829ebd588 | 7 | DigitalOut ledverde(LED_GREEN); |
Jalle | 0:ad5829ebd588 | 8 | DigitalOut ledrojo(LED_RED); |
Jalle | 0:ad5829ebd588 | 9 | DigitalIn enta(PTC7); |
Jalle | 0:ad5829ebd588 | 10 | DigitalIn entb(PTC0); |
Jalle | 0:ad5829ebd588 | 11 | DigitalIn entc(PTC3); |
Jalle | 0:ad5829ebd588 | 12 | |
Jalle | 0:ad5829ebd588 | 13 | |
Jalle | 0:ad5829ebd588 | 14 | int e=0,cuenta=2,cantidad=1,estado=1,mal=0,nuevo=0,erro=0,b=1,demo=0,ap=4,cuenta2=0,temp1=0,temp2=0,temp3=0; |
Jalle | 0:ad5829ebd588 | 15 | int dato[50]; |
Jalle | 0:ad5829ebd588 | 16 | Ticker tic2; |
Jalle | 0:ad5829ebd588 | 17 | Ticker tic1; |
Jalle | 0:ad5829ebd588 | 18 | void funcion(); |
Jalle | 0:ad5829ebd588 | 19 | void cuento(); |
Jalle | 0:ad5829ebd588 | 20 | |
Jalle | 0:ad5829ebd588 | 21 | |
Jalle | 0:ad5829ebd588 | 22 | int main(void) |
Jalle | 0:ad5829ebd588 | 23 | { |
Jalle | 0:ad5829ebd588 | 24 | tic2.attach(&funcion, 1); //Contador general 1seg |
Jalle | 0:ad5829ebd588 | 25 | tic1.attach(&cuento, 0.01); //Contador del sistema de antirebote 10mseg |
Jalle | 0:ad5829ebd588 | 26 | |
Jalle | 0:ad5829ebd588 | 27 | ledrojo=1; //Apagamos todo antes de empezar por las dudas |
Jalle | 0:ad5829ebd588 | 28 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 29 | ledverde=1; |
Jalle | 0:ad5829ebd588 | 30 | printf("Presione los botones en el siguiente orden: (verde=1)(rojo=2)(azul=3)\n"); |
Jalle | 0:ad5829ebd588 | 31 | |
Jalle | 0:ad5829ebd588 | 32 | while (true) { |
Jalle | 0:ad5829ebd588 | 33 | |
Jalle | 0:ad5829ebd588 | 34 | switch (estado) { //Maquina de estados gemeral |
Jalle | 0:ad5829ebd588 | 35 | default: |
Jalle | 0:ad5829ebd588 | 36 | case 1: //Estado para generar colores |
Jalle | 0:ad5829ebd588 | 37 | |
Jalle | 0:ad5829ebd588 | 38 | if(b!=cuenta) { //Generamos colores hasta que generamos todos los que necesitamos (cuenta nos dice cuantos) |
Jalle | 0:ad5829ebd588 | 39 | dato[b]=rand() % (1+2)+1; //Dato almacena los colores |
Jalle | 0:ad5829ebd588 | 40 | printf("%d\n",dato[b]); |
Jalle | 0:ad5829ebd588 | 41 | b++; //b nos va a servir para llevar la cuenta internamente en muchos estados |
Jalle | 0:ad5829ebd588 | 42 | cantidad++; //Cantidad almacena cuantos colores hay guardados |
Jalle | 0:ad5829ebd588 | 43 | |
Jalle | 0:ad5829ebd588 | 44 | } |
Jalle | 0:ad5829ebd588 | 45 | |
Jalle | 0:ad5829ebd588 | 46 | |
Jalle | 0:ad5829ebd588 | 47 | if(b==cuenta) { //Si b alcanzo a la cantidad que colores que tendriamos que tener generados, avanza |
Jalle | 0:ad5829ebd588 | 48 | estado=2; |
Jalle | 0:ad5829ebd588 | 49 | b=1; //Borramos esta variable para que los siguientes estados la puedan usar |
Jalle | 0:ad5829ebd588 | 50 | |
Jalle | 0:ad5829ebd588 | 51 | } |
Jalle | 0:ad5829ebd588 | 52 | break; |
Jalle | 0:ad5829ebd588 | 53 | |
Jalle | 0:ad5829ebd588 | 54 | case 2: //Estado para mostrar los colores que hay que apretar luego |
Jalle | 0:ad5829ebd588 | 55 | |
Jalle | 0:ad5829ebd588 | 56 | if(dato[b]==1) { //Si esta almacenado el verde, se muestra el verde |
Jalle | 0:ad5829ebd588 | 57 | ledverde=0; |
Jalle | 0:ad5829ebd588 | 58 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 59 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 60 | } |
Jalle | 0:ad5829ebd588 | 61 | if(dato[b]==2) { |
Jalle | 0:ad5829ebd588 | 62 | ledverde=1; |
Jalle | 0:ad5829ebd588 | 63 | ledrojo=0; |
Jalle | 0:ad5829ebd588 | 64 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 65 | } |
Jalle | 0:ad5829ebd588 | 66 | if(dato[b]==3) { |
Jalle | 0:ad5829ebd588 | 67 | ledverde=1; |
Jalle | 0:ad5829ebd588 | 68 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 69 | ledazul=0; |
Jalle | 0:ad5829ebd588 | 70 | } |
Jalle | 0:ad5829ebd588 | 71 | |
Jalle | 0:ad5829ebd588 | 72 | if(e==1) { //Luego de 1seg mostrando un color, nos vamos al estado 7 para esperar 1seg |
Jalle | 0:ad5829ebd588 | 73 | estado=7; |
Jalle | 0:ad5829ebd588 | 74 | |
Jalle | 0:ad5829ebd588 | 75 | e=0; //Volvemos a poner en 0 la variable del ticker |
Jalle | 0:ad5829ebd588 | 76 | ledverde=1; //Apagamos todo para esperar 1seg |
Jalle | 0:ad5829ebd588 | 77 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 78 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 79 | b++; //Guardamos que mostramos 1 color mas |
Jalle | 0:ad5829ebd588 | 80 | } |
Jalle | 0:ad5829ebd588 | 81 | if(b==cantidad) { //Si mostramos todos los colores que tenemos almacenados avanzamos a la siguiente etapa |
Jalle | 0:ad5829ebd588 | 82 | |
Jalle | 0:ad5829ebd588 | 83 | estado=4; |
Jalle | 0:ad5829ebd588 | 84 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 85 | demo=0; //Ponemos en 0 todas las variables locales para que las siguientes etapas las puedan usar |
Jalle | 0:ad5829ebd588 | 86 | e=0; |
Jalle | 0:ad5829ebd588 | 87 | ledverde=1; //Apagamos leds |
Jalle | 0:ad5829ebd588 | 88 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 89 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 90 | b=1; |
Jalle | 0:ad5829ebd588 | 91 | } |
Jalle | 0:ad5829ebd588 | 92 | break; |
Jalle | 0:ad5829ebd588 | 93 | |
Jalle | 0:ad5829ebd588 | 94 | case 4: |
Jalle | 0:ad5829ebd588 | 95 | |
Jalle | 0:ad5829ebd588 | 96 | |
Jalle | 0:ad5829ebd588 | 97 | switch (temp1) { //Maquina de antirebote para el color rojo |
Jalle | 0:ad5829ebd588 | 98 | case 0: |
Jalle | 0:ad5829ebd588 | 99 | if(enta==0){//Esperamos a que se apriete el pulsador |
Jalle | 0:ad5829ebd588 | 100 | temp1=1;//Vamos al estado 1 |
Jalle | 0:ad5829ebd588 | 101 | |
Jalle | 0:ad5829ebd588 | 102 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 103 | } |
Jalle | 0:ad5829ebd588 | 104 | |
Jalle | 0:ad5829ebd588 | 105 | |
Jalle | 0:ad5829ebd588 | 106 | break; |
Jalle | 0:ad5829ebd588 | 107 | case 1: |
Jalle | 0:ad5829ebd588 | 108 | if(cuenta2>=1) {//Esperamos que pasen 20mseg antes de poder avanzar, asi ignoramos el rebote |
Jalle | 0:ad5829ebd588 | 109 | temp1=2; |
Jalle | 0:ad5829ebd588 | 110 | |
Jalle | 0:ad5829ebd588 | 111 | |
Jalle | 0:ad5829ebd588 | 112 | e=0; //Ponemos en 0 el ticker otra vez |
Jalle | 0:ad5829ebd588 | 113 | ledverde=1; //Prendemos el led rojo |
Jalle | 0:ad5829ebd588 | 114 | ledrojo=0; |
Jalle | 0:ad5829ebd588 | 115 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 116 | ap=2; //Guardamos que se pulso el led rojo |
Jalle | 0:ad5829ebd588 | 117 | } |
Jalle | 0:ad5829ebd588 | 118 | break; |
Jalle | 0:ad5829ebd588 | 119 | case 2: |
Jalle | 0:ad5829ebd588 | 120 | if(enta==1){ //Esperamos a que se despulse |
Jalle | 0:ad5829ebd588 | 121 | temp1=3; //Vamos al siguiente estado |
Jalle | 0:ad5829ebd588 | 122 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 123 | } |
Jalle | 0:ad5829ebd588 | 124 | |
Jalle | 0:ad5829ebd588 | 125 | break; |
Jalle | 0:ad5829ebd588 | 126 | case 3: |
Jalle | 0:ad5829ebd588 | 127 | if(cuenta2>=1) { //Esperamos 20mseg para ignorar el rebote |
Jalle | 0:ad5829ebd588 | 128 | temp1=0; |
Jalle | 0:ad5829ebd588 | 129 | |
Jalle | 0:ad5829ebd588 | 130 | //Todas las maquinas de antirebote son iguales, solo que correspondientes a su pulsador y color asociado. |
Jalle | 0:ad5829ebd588 | 131 | } |
Jalle | 0:ad5829ebd588 | 132 | break; |
Jalle | 0:ad5829ebd588 | 133 | } |
Jalle | 0:ad5829ebd588 | 134 | |
Jalle | 0:ad5829ebd588 | 135 | |
Jalle | 0:ad5829ebd588 | 136 | switch (temp2) { //Maquina de antirebote para el color verde |
Jalle | 0:ad5829ebd588 | 137 | case 0: |
Jalle | 0:ad5829ebd588 | 138 | if(entb==0){ |
Jalle | 0:ad5829ebd588 | 139 | temp2=1; |
Jalle | 0:ad5829ebd588 | 140 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 141 | } |
Jalle | 0:ad5829ebd588 | 142 | break; |
Jalle | 0:ad5829ebd588 | 143 | case 1: |
Jalle | 0:ad5829ebd588 | 144 | if(cuenta2>=1) { |
Jalle | 0:ad5829ebd588 | 145 | temp2=2; |
Jalle | 0:ad5829ebd588 | 146 | |
Jalle | 0:ad5829ebd588 | 147 | |
Jalle | 0:ad5829ebd588 | 148 | e=0; |
Jalle | 0:ad5829ebd588 | 149 | ledverde=0; |
Jalle | 0:ad5829ebd588 | 150 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 151 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 152 | ap=1; |
Jalle | 0:ad5829ebd588 | 153 | } |
Jalle | 0:ad5829ebd588 | 154 | break; |
Jalle | 0:ad5829ebd588 | 155 | case 2: |
Jalle | 0:ad5829ebd588 | 156 | if(entb==1){ |
Jalle | 0:ad5829ebd588 | 157 | temp2=3; |
Jalle | 0:ad5829ebd588 | 158 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 159 | } |
Jalle | 0:ad5829ebd588 | 160 | break; |
Jalle | 0:ad5829ebd588 | 161 | case 3: |
Jalle | 0:ad5829ebd588 | 162 | if(cuenta2>=1) { |
Jalle | 0:ad5829ebd588 | 163 | temp2=0; |
Jalle | 0:ad5829ebd588 | 164 | |
Jalle | 0:ad5829ebd588 | 165 | |
Jalle | 0:ad5829ebd588 | 166 | } |
Jalle | 0:ad5829ebd588 | 167 | break; |
Jalle | 0:ad5829ebd588 | 168 | } |
Jalle | 0:ad5829ebd588 | 169 | switch (temp3) { //Maquina de antirebote del color azul |
Jalle | 0:ad5829ebd588 | 170 | case 0: |
Jalle | 0:ad5829ebd588 | 171 | if(entc==0){ |
Jalle | 0:ad5829ebd588 | 172 | temp3=1; |
Jalle | 0:ad5829ebd588 | 173 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 174 | } |
Jalle | 0:ad5829ebd588 | 175 | break; |
Jalle | 0:ad5829ebd588 | 176 | case 1: |
Jalle | 0:ad5829ebd588 | 177 | if(cuenta2>=1) { |
Jalle | 0:ad5829ebd588 | 178 | temp3=2; |
Jalle | 0:ad5829ebd588 | 179 | |
Jalle | 0:ad5829ebd588 | 180 | |
Jalle | 0:ad5829ebd588 | 181 | e=0; |
Jalle | 0:ad5829ebd588 | 182 | ledverde=1; |
Jalle | 0:ad5829ebd588 | 183 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 184 | ledazul=0; |
Jalle | 0:ad5829ebd588 | 185 | ap=3; |
Jalle | 0:ad5829ebd588 | 186 | } |
Jalle | 0:ad5829ebd588 | 187 | break; |
Jalle | 0:ad5829ebd588 | 188 | case 2: |
Jalle | 0:ad5829ebd588 | 189 | if(entc==1){ |
Jalle | 0:ad5829ebd588 | 190 | temp3=3; |
Jalle | 0:ad5829ebd588 | 191 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 192 | } |
Jalle | 0:ad5829ebd588 | 193 | break; |
Jalle | 0:ad5829ebd588 | 194 | case 3: |
Jalle | 0:ad5829ebd588 | 195 | if(cuenta2>=1) { |
Jalle | 0:ad5829ebd588 | 196 | temp3=0; |
Jalle | 0:ad5829ebd588 | 197 | |
Jalle | 0:ad5829ebd588 | 198 | |
Jalle | 0:ad5829ebd588 | 199 | } |
Jalle | 0:ad5829ebd588 | 200 | break; |
Jalle | 0:ad5829ebd588 | 201 | } //Termina la maquina |
Jalle | 0:ad5829ebd588 | 202 | |
Jalle | 0:ad5829ebd588 | 203 | if(ap!=4) { //AP es 4 cuando nada se aprieta, en caso de que no sea 4 significa que algo se apreto |
Jalle | 0:ad5829ebd588 | 204 | if(ap==dato[b]&&e==1) { //Si lo que se apreto es igual a lo que habia que apretar, avanzamos (tambien hay que esperar a que pase 1seg) |
Jalle | 0:ad5829ebd588 | 205 | b++; //Guardamos que avanzamos en 1 |
Jalle | 0:ad5829ebd588 | 206 | estado=5; //Si es correcto, vamos al estado 5 que es un clon de este estado |
Jalle | 0:ad5829ebd588 | 207 | e=0; |
Jalle | 0:ad5829ebd588 | 208 | |
Jalle | 0:ad5829ebd588 | 209 | ap=4; //Ponemos AP en 4 para que no nos cuente mas de 1 vez un solo apriete |
Jalle | 0:ad5829ebd588 | 210 | ledverde=1; //Apagamos todo |
Jalle | 0:ad5829ebd588 | 211 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 212 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 213 | |
Jalle | 0:ad5829ebd588 | 214 | } |
Jalle | 0:ad5829ebd588 | 215 | if(ap!=dato[b]&&e==1) { //Si el boton no corresponde con lo que habia que apretar, aplicamos la parte del error |
Jalle | 0:ad5829ebd588 | 216 | |
Jalle | 0:ad5829ebd588 | 217 | estado=6; |
Jalle | 0:ad5829ebd588 | 218 | e=0; |
Jalle | 0:ad5829ebd588 | 219 | b=1; //Ponemos en 0 todo (o 1 en caso de b) |
Jalle | 0:ad5829ebd588 | 220 | } |
Jalle | 0:ad5829ebd588 | 221 | } |
Jalle | 0:ad5829ebd588 | 222 | if(b==cuenta) { //Si avanzamos correctamente hasta el punto que no hay mas colores que apretar, significa que ganamos |
Jalle | 0:ad5829ebd588 | 223 | |
Jalle | 0:ad5829ebd588 | 224 | cuenta++; //Guardamos que queremos 1 color mas |
Jalle | 0:ad5829ebd588 | 225 | e=0; |
Jalle | 0:ad5829ebd588 | 226 | estado=8; |
Jalle | 0:ad5829ebd588 | 227 | } |
Jalle | 0:ad5829ebd588 | 228 | if(b==24) { //Si llegamos a 24 significa que el juego termino |
Jalle | 0:ad5829ebd588 | 229 | |
Jalle | 0:ad5829ebd588 | 230 | b=1; |
Jalle | 0:ad5829ebd588 | 231 | e=0; |
Jalle | 0:ad5829ebd588 | 232 | estado=6; |
Jalle | 0:ad5829ebd588 | 233 | } |
Jalle | 0:ad5829ebd588 | 234 | |
Jalle | 0:ad5829ebd588 | 235 | if(cuenta2>=3000) { //Si pasan 3 segundos sin tocar nada tambien se pierde significa que el juego termino |
Jalle | 0:ad5829ebd588 | 236 | |
Jalle | 0:ad5829ebd588 | 237 | b=1; |
Jalle | 0:ad5829ebd588 | 238 | e=0; |
Jalle | 0:ad5829ebd588 | 239 | estado=6; |
Jalle | 0:ad5829ebd588 | 240 | } |
Jalle | 0:ad5829ebd588 | 241 | |
Jalle | 0:ad5829ebd588 | 242 | break; |
Jalle | 0:ad5829ebd588 | 243 | case 5: //Clon del estado 4 |
Jalle | 0:ad5829ebd588 | 244 | |
Jalle | 0:ad5829ebd588 | 245 | |
Jalle | 0:ad5829ebd588 | 246 | switch (temp1) { |
Jalle | 0:ad5829ebd588 | 247 | case 0: |
Jalle | 0:ad5829ebd588 | 248 | if(enta==0){ |
Jalle | 0:ad5829ebd588 | 249 | temp1=1; |
Jalle | 0:ad5829ebd588 | 250 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 251 | } |
Jalle | 0:ad5829ebd588 | 252 | break; |
Jalle | 0:ad5829ebd588 | 253 | case 1: |
Jalle | 0:ad5829ebd588 | 254 | if(cuenta2>=2) { |
Jalle | 0:ad5829ebd588 | 255 | temp1=2; |
Jalle | 0:ad5829ebd588 | 256 | |
Jalle | 0:ad5829ebd588 | 257 | e=0; |
Jalle | 0:ad5829ebd588 | 258 | ledverde=1; |
Jalle | 0:ad5829ebd588 | 259 | ledrojo=0; |
Jalle | 0:ad5829ebd588 | 260 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 261 | ap=2; |
Jalle | 0:ad5829ebd588 | 262 | } |
Jalle | 0:ad5829ebd588 | 263 | break; |
Jalle | 0:ad5829ebd588 | 264 | case 2: |
Jalle | 0:ad5829ebd588 | 265 | if(enta==1){ |
Jalle | 0:ad5829ebd588 | 266 | temp1=3; |
Jalle | 0:ad5829ebd588 | 267 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 268 | } |
Jalle | 0:ad5829ebd588 | 269 | break; |
Jalle | 0:ad5829ebd588 | 270 | case 3: |
Jalle | 0:ad5829ebd588 | 271 | if(cuenta2>=2) { |
Jalle | 0:ad5829ebd588 | 272 | temp1=0; |
Jalle | 0:ad5829ebd588 | 273 | |
Jalle | 0:ad5829ebd588 | 274 | |
Jalle | 0:ad5829ebd588 | 275 | } |
Jalle | 0:ad5829ebd588 | 276 | break; |
Jalle | 0:ad5829ebd588 | 277 | } |
Jalle | 0:ad5829ebd588 | 278 | |
Jalle | 0:ad5829ebd588 | 279 | |
Jalle | 0:ad5829ebd588 | 280 | switch (temp2) { |
Jalle | 0:ad5829ebd588 | 281 | case 0: |
Jalle | 0:ad5829ebd588 | 282 | if(entb==0){ |
Jalle | 0:ad5829ebd588 | 283 | temp2=1; |
Jalle | 0:ad5829ebd588 | 284 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 285 | } |
Jalle | 0:ad5829ebd588 | 286 | break; |
Jalle | 0:ad5829ebd588 | 287 | case 1: |
Jalle | 0:ad5829ebd588 | 288 | if(cuenta2>=2) { |
Jalle | 0:ad5829ebd588 | 289 | temp2=2; |
Jalle | 0:ad5829ebd588 | 290 | |
Jalle | 0:ad5829ebd588 | 291 | |
Jalle | 0:ad5829ebd588 | 292 | e=0; |
Jalle | 0:ad5829ebd588 | 293 | ledverde=0; |
Jalle | 0:ad5829ebd588 | 294 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 295 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 296 | ap=1; |
Jalle | 0:ad5829ebd588 | 297 | } |
Jalle | 0:ad5829ebd588 | 298 | break; |
Jalle | 0:ad5829ebd588 | 299 | case 2: |
Jalle | 0:ad5829ebd588 | 300 | if(entb==1){ |
Jalle | 0:ad5829ebd588 | 301 | temp2=3; |
Jalle | 0:ad5829ebd588 | 302 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 303 | } |
Jalle | 0:ad5829ebd588 | 304 | break; |
Jalle | 0:ad5829ebd588 | 305 | case 3: |
Jalle | 0:ad5829ebd588 | 306 | if(cuenta2>=2) { |
Jalle | 0:ad5829ebd588 | 307 | temp2=0; |
Jalle | 0:ad5829ebd588 | 308 | |
Jalle | 0:ad5829ebd588 | 309 | |
Jalle | 0:ad5829ebd588 | 310 | } |
Jalle | 0:ad5829ebd588 | 311 | break; |
Jalle | 0:ad5829ebd588 | 312 | } |
Jalle | 0:ad5829ebd588 | 313 | switch (temp3) { |
Jalle | 0:ad5829ebd588 | 314 | case 0: |
Jalle | 0:ad5829ebd588 | 315 | if(entc==0){ |
Jalle | 0:ad5829ebd588 | 316 | temp3=1; |
Jalle | 0:ad5829ebd588 | 317 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 318 | } |
Jalle | 0:ad5829ebd588 | 319 | break; |
Jalle | 0:ad5829ebd588 | 320 | case 1: |
Jalle | 0:ad5829ebd588 | 321 | if(cuenta2>=2) { |
Jalle | 0:ad5829ebd588 | 322 | temp3=2; |
Jalle | 0:ad5829ebd588 | 323 | |
Jalle | 0:ad5829ebd588 | 324 | |
Jalle | 0:ad5829ebd588 | 325 | e=0; |
Jalle | 0:ad5829ebd588 | 326 | ledverde=1; |
Jalle | 0:ad5829ebd588 | 327 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 328 | ledazul=0; |
Jalle | 0:ad5829ebd588 | 329 | ap=3; |
Jalle | 0:ad5829ebd588 | 330 | } |
Jalle | 0:ad5829ebd588 | 331 | break; |
Jalle | 0:ad5829ebd588 | 332 | case 2: |
Jalle | 0:ad5829ebd588 | 333 | if(entc==1){ |
Jalle | 0:ad5829ebd588 | 334 | temp3=3; |
Jalle | 0:ad5829ebd588 | 335 | cuenta2=0; |
Jalle | 0:ad5829ebd588 | 336 | } |
Jalle | 0:ad5829ebd588 | 337 | break; |
Jalle | 0:ad5829ebd588 | 338 | case 3: |
Jalle | 0:ad5829ebd588 | 339 | if(cuenta2>=2) { |
Jalle | 0:ad5829ebd588 | 340 | temp3=0; |
Jalle | 0:ad5829ebd588 | 341 | |
Jalle | 0:ad5829ebd588 | 342 | |
Jalle | 0:ad5829ebd588 | 343 | } |
Jalle | 0:ad5829ebd588 | 344 | break; |
Jalle | 0:ad5829ebd588 | 345 | } |
Jalle | 0:ad5829ebd588 | 346 | |
Jalle | 0:ad5829ebd588 | 347 | |
Jalle | 0:ad5829ebd588 | 348 | if(ap!=4) { |
Jalle | 0:ad5829ebd588 | 349 | if(ap==dato[b]&&e==1) { |
Jalle | 0:ad5829ebd588 | 350 | b++; |
Jalle | 0:ad5829ebd588 | 351 | estado=4; //Si es correcto, vamos al estado 4 otra vez. Es un ciclo infinito |
Jalle | 0:ad5829ebd588 | 352 | e=0; |
Jalle | 0:ad5829ebd588 | 353 | ap=4; |
Jalle | 0:ad5829ebd588 | 354 | ledverde=1; |
Jalle | 0:ad5829ebd588 | 355 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 356 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 357 | |
Jalle | 0:ad5829ebd588 | 358 | } |
Jalle | 0:ad5829ebd588 | 359 | if(ap!=dato[b]&&e==1) { |
Jalle | 0:ad5829ebd588 | 360 | |
Jalle | 0:ad5829ebd588 | 361 | estado=6; |
Jalle | 0:ad5829ebd588 | 362 | e=0; |
Jalle | 0:ad5829ebd588 | 363 | b=1; |
Jalle | 0:ad5829ebd588 | 364 | } |
Jalle | 0:ad5829ebd588 | 365 | } |
Jalle | 0:ad5829ebd588 | 366 | if(b==cuenta) { |
Jalle | 0:ad5829ebd588 | 367 | |
Jalle | 0:ad5829ebd588 | 368 | cuenta++; |
Jalle | 0:ad5829ebd588 | 369 | e=0; |
Jalle | 0:ad5829ebd588 | 370 | estado=8; |
Jalle | 0:ad5829ebd588 | 371 | } |
Jalle | 0:ad5829ebd588 | 372 | if(b==24) { //Si llegamos a 24 significa que el juego termino |
Jalle | 0:ad5829ebd588 | 373 | |
Jalle | 0:ad5829ebd588 | 374 | b=1; |
Jalle | 0:ad5829ebd588 | 375 | e=0; |
Jalle | 0:ad5829ebd588 | 376 | estado=6; |
Jalle | 0:ad5829ebd588 | 377 | } |
Jalle | 0:ad5829ebd588 | 378 | |
Jalle | 0:ad5829ebd588 | 379 | |
Jalle | 0:ad5829ebd588 | 380 | if(cuenta2>=3000) { //Si pasan 3 segundos sin tocar nada tambien se pierde significa que el juego termino |
Jalle | 0:ad5829ebd588 | 381 | |
Jalle | 0:ad5829ebd588 | 382 | b=1; |
Jalle | 0:ad5829ebd588 | 383 | e=0; |
Jalle | 0:ad5829ebd588 | 384 | estado=6; |
Jalle | 0:ad5829ebd588 | 385 | } |
Jalle | 0:ad5829ebd588 | 386 | break; |
Jalle | 0:ad5829ebd588 | 387 | case 6: |
Jalle | 0:ad5829ebd588 | 388 | //Estado de error |
Jalle | 0:ad5829ebd588 | 389 | ledverde=1; //Apagamos todo |
Jalle | 0:ad5829ebd588 | 390 | ledrojo=1; |
Jalle | 0:ad5829ebd588 | 391 | ledazul=1; |
Jalle | 0:ad5829ebd588 | 392 | ap=4; |
Jalle | 0:ad5829ebd588 | 393 | |
Jalle | 0:ad5829ebd588 | 394 | cantidad=1; //Ponemos todas las variables para empezar desde 0 todo el juego |
Jalle | 0:ad5829ebd588 | 395 | cuenta=2; |
Jalle | 0:ad5829ebd588 | 396 | b=1; |
Jalle | 0:ad5829ebd588 | 397 | if(e==1) { |
Jalle | 0:ad5829ebd588 | 398 | estado=1; //Luego de esperar 1seg, vamos al estado 1 a empezar otra vez |
Jalle | 0:ad5829ebd588 | 399 | printf("Presione los botones en el siguiente orden: (rojo=2)(verde=1)(azul=3)\n"); |
Jalle | 0:ad5829ebd588 | 400 | } |
Jalle | 0:ad5829ebd588 | 401 | e=0; |
Jalle | 0:ad5829ebd588 | 402 | |
Jalle | 0:ad5829ebd588 | 403 | |
Jalle | 0:ad5829ebd588 | 404 | case 7: |
Jalle | 0:ad5829ebd588 | 405 | |
Jalle | 0:ad5829ebd588 | 406 | if(e==1) |
Jalle | 0:ad5829ebd588 | 407 | estado=2;//Esperamos 1seg antes de mostrar el siguiente color |
Jalle | 0:ad5829ebd588 | 408 | e=0; |
Jalle | 0:ad5829ebd588 | 409 | break; |
Jalle | 0:ad5829ebd588 | 410 | case 8: |
Jalle | 0:ad5829ebd588 | 411 | if(e==1) |
Jalle | 0:ad5829ebd588 | 412 | estado=1;//Esperamos 1seg antes de avanzar en el juego |
Jalle | 0:ad5829ebd588 | 413 | e=0; |
Jalle | 0:ad5829ebd588 | 414 | break; |
Jalle | 0:ad5829ebd588 | 415 | |
Jalle | 0:ad5829ebd588 | 416 | |
Jalle | 0:ad5829ebd588 | 417 | |
Jalle | 0:ad5829ebd588 | 418 | |
Jalle | 0:ad5829ebd588 | 419 | |
Jalle | 0:ad5829ebd588 | 420 | |
Jalle | 0:ad5829ebd588 | 421 | |
Jalle | 0:ad5829ebd588 | 422 | } |
Jalle | 0:ad5829ebd588 | 423 | |
Jalle | 0:ad5829ebd588 | 424 | |
Jalle | 0:ad5829ebd588 | 425 | |
Jalle | 0:ad5829ebd588 | 426 | |
Jalle | 0:ad5829ebd588 | 427 | } |
Jalle | 0:ad5829ebd588 | 428 | } |
Jalle | 0:ad5829ebd588 | 429 | |
Jalle | 0:ad5829ebd588 | 430 | |
Jalle | 0:ad5829ebd588 | 431 | void cuento() |
Jalle | 0:ad5829ebd588 | 432 | { |
Jalle | 0:ad5829ebd588 | 433 | |
Jalle | 0:ad5829ebd588 | 434 | cuenta2++; //Cuenta cada 10mseg para el sistema de antirebote |
Jalle | 0:ad5829ebd588 | 435 | |
Jalle | 0:ad5829ebd588 | 436 | } |
Jalle | 0:ad5829ebd588 | 437 | void funcion() |
Jalle | 0:ad5829ebd588 | 438 | { |
Jalle | 0:ad5829ebd588 | 439 | |
Jalle | 0:ad5829ebd588 | 440 | if(e==0) //Se pone en 1 cada 1seg |
Jalle | 0:ad5829ebd588 | 441 | e=1; |
Jalle | 0:ad5829ebd588 | 442 | |
Jalle | 0:ad5829ebd588 | 443 | } |