4 Cables con pulsadores y pull-up con 2 Displays en paralelo

Dependencies:   mbed

Committer:
gonzaloMS
Date:
Wed Jun 19 12:45:45 2019 +0000
Revision:
0:d644ac0f96b0
Child:
1:2f8c5940c425
TP de Cables y Displays

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gonzaloMS 0:d644ac0f96b0 1 #include "mbed.h"
gonzaloMS 0:d644ac0f96b0 2
gonzaloMS 0:d644ac0f96b0 3 enum{INICIO,GENERA1,GENERA2,GENERA3,FIN,BEGGINING,CHECK1,CHECK2,CHECK3,ENDGAME,WINGAME};
gonzaloMS 0:d644ac0f96b0 4
gonzaloMS 0:d644ac0f96b0 5 DigitalIn E1r(PTC12);
gonzaloMS 0:d644ac0f96b0 6 DigitalIn E2r(PTC13);
gonzaloMS 0:d644ac0f96b0 7 DigitalIn E3r(PTC3);
gonzaloMS 0:d644ac0f96b0 8 DigitalIn E4r(PTC4);
gonzaloMS 0:d644ac0f96b0 9 DigitalIn pulsadorReset(PTE29); //Normalmente 1
gonzaloMS 0:d644ac0f96b0 10
gonzaloMS 0:d644ac0f96b0 11 DigitalOut ledWin(LED2);
gonzaloMS 0:d644ac0f96b0 12 DigitalOut ledLost(LED1);
gonzaloMS 0:d644ac0f96b0 13
gonzaloMS 0:d644ac0f96b0 14 BusOut Displays(D2,D3,D4,D5,A3,A2,A1,A0,D8); //HAB.2 - HAB.1 -G-F-E-D-C-B-A //
gonzaloMS 0:d644ac0f96b0 15
gonzaloMS 0:d644ac0f96b0 16 int E1=0;
gonzaloMS 0:d644ac0f96b0 17 int E2=0;
gonzaloMS 0:d644ac0f96b0 18 int E3=0;
gonzaloMS 0:d644ac0f96b0 19 int E4=0;
gonzaloMS 0:d644ac0f96b0 20
gonzaloMS 0:d644ac0f96b0 21
gonzaloMS 0:d644ac0f96b0 22 int numerosD[]={0b111111010,0b011000010,0b110110110,0b111100110,0b011001110,0b101101110,0b101111110,0b111000010,0b111111110,0b111001110};
gonzaloMS 0:d644ac0f96b0 23 int numerosU[]={0b111111001,0b011000001,0b110110101,0b111100101,0b011001101,0b101101101,0b101111101,0b111000001,0b111111101,0b111001101};
gonzaloMS 0:d644ac0f96b0 24
gonzaloMS 0:d644ac0f96b0 25 Ticker Tempo;
gonzaloMS 0:d644ac0f96b0 26 Ticker Display;
gonzaloMS 0:d644ac0f96b0 27 Ticker parpadeoTicker;
gonzaloMS 0:d644ac0f96b0 28
gonzaloMS 0:d644ac0f96b0 29 void generacion();
gonzaloMS 0:d644ac0f96b0 30 void chequeo();
gonzaloMS 0:d644ac0f96b0 31 void Chronos();
gonzaloMS 0:d644ac0f96b0 32 void theviewer();
gonzaloMS 0:d644ac0f96b0 33 void ganopierdoreaccion();
gonzaloMS 0:d644ac0f96b0 34 void parpadeoFuncion();
gonzaloMS 0:d644ac0f96b0 35 void reset();
gonzaloMS 0:d644ac0f96b0 36
gonzaloMS 0:d644ac0f96b0 37 int parimpar=0;
gonzaloMS 0:d644ac0f96b0 38
gonzaloMS 0:d644ac0f96b0 39 int regresor=60;
gonzaloMS 0:d644ac0f96b0 40 int Decenas;
gonzaloMS 0:d644ac0f96b0 41 int Unidades;
gonzaloMS 0:d644ac0f96b0 42 int secuencia;
gonzaloMS 0:d644ac0f96b0 43 int check;
gonzaloMS 0:d644ac0f96b0 44
gonzaloMS 0:d644ac0f96b0 45 int cantIgual=0;
gonzaloMS 0:d644ac0f96b0 46 int cantIgual2=0;
gonzaloMS 0:d644ac0f96b0 47 int cantIgual3=0;
gonzaloMS 0:d644ac0f96b0 48
gonzaloMS 0:d644ac0f96b0 49 int gSec1;
gonzaloMS 0:d644ac0f96b0 50 int gSec2;
gonzaloMS 0:d644ac0f96b0 51 int gSec3;
gonzaloMS 0:d644ac0f96b0 52 int vecSec[]={0,0,0,0};
gonzaloMS 0:d644ac0f96b0 53 int vecSec2[]={0,0,0,0};
gonzaloMS 0:d644ac0f96b0 54 int vecSec3[]={0,0,0,0};
gonzaloMS 0:d644ac0f96b0 55 int vecSec4[]={0,0,0,0};
gonzaloMS 0:d644ac0f96b0 56 int vecChq[]={0,0,0,0};
gonzaloMS 0:d644ac0f96b0 57
gonzaloMS 0:d644ac0f96b0 58 int parpadeoDisplay=0;
gonzaloMS 0:d644ac0f96b0 59
gonzaloMS 0:d644ac0f96b0 60 int fin=0;
gonzaloMS 0:d644ac0f96b0 61 int win=0;
gonzaloMS 0:d644ac0f96b0 62
gonzaloMS 0:d644ac0f96b0 63 int i;
gonzaloMS 0:d644ac0f96b0 64 int y;
gonzaloMS 0:d644ac0f96b0 65 int k;
gonzaloMS 0:d644ac0f96b0 66 int g=61;
gonzaloMS 0:d644ac0f96b0 67
gonzaloMS 0:d644ac0f96b0 68
gonzaloMS 0:d644ac0f96b0 69 int main() {
gonzaloMS 0:d644ac0f96b0 70 ledWin=1;
gonzaloMS 0:d644ac0f96b0 71 ledLost=1;
gonzaloMS 0:d644ac0f96b0 72 E1r.mode(PullUp);
gonzaloMS 0:d644ac0f96b0 73 E2r.mode(PullUp);
gonzaloMS 0:d644ac0f96b0 74 E3r.mode(PullUp);
gonzaloMS 0:d644ac0f96b0 75 E4r.mode(PullUp);
gonzaloMS 0:d644ac0f96b0 76 pulsadorReset.mode(PullUp);
gonzaloMS 0:d644ac0f96b0 77 Tempo.attach(&Chronos,1);
gonzaloMS 0:d644ac0f96b0 78 Display.attach(&theviewer,0.005);
gonzaloMS 0:d644ac0f96b0 79 parpadeoTicker.attach(&parpadeoFuncion,0.5);
gonzaloMS 0:d644ac0f96b0 80 while(1) {
gonzaloMS 0:d644ac0f96b0 81 generacion();
gonzaloMS 0:d644ac0f96b0 82 chequeo();
gonzaloMS 0:d644ac0f96b0 83 ganopierdoreaccion();
gonzaloMS 0:d644ac0f96b0 84 reset();
gonzaloMS 0:d644ac0f96b0 85 if(regresor < g)
gonzaloMS 0:d644ac0f96b0 86 {
gonzaloMS 0:d644ac0f96b0 87 E1=E1r;
gonzaloMS 0:d644ac0f96b0 88 E2=E2r;
gonzaloMS 0:d644ac0f96b0 89 E3=E3r;
gonzaloMS 0:d644ac0f96b0 90 E4=E4r;
gonzaloMS 0:d644ac0f96b0 91 g=regresor;
gonzaloMS 0:d644ac0f96b0 92 printf("Entradas: %d %d %d %d \n", E1,E2,E3,E4);
gonzaloMS 0:d644ac0f96b0 93 printf("Tiempo (en segundos): %d \n \n",g);
gonzaloMS 0:d644ac0f96b0 94 }
gonzaloMS 0:d644ac0f96b0 95 }
gonzaloMS 0:d644ac0f96b0 96 }
gonzaloMS 0:d644ac0f96b0 97
gonzaloMS 0:d644ac0f96b0 98 void reset()
gonzaloMS 0:d644ac0f96b0 99 {
gonzaloMS 0:d644ac0f96b0 100 if(pulsadorReset==0)
gonzaloMS 0:d644ac0f96b0 101 {
gonzaloMS 0:d644ac0f96b0 102 ledWin=1;
gonzaloMS 0:d644ac0f96b0 103 parimpar=0;
gonzaloMS 0:d644ac0f96b0 104 cantIgual=0;
gonzaloMS 0:d644ac0f96b0 105 cantIgual2=0;
gonzaloMS 0:d644ac0f96b0 106 cantIgual3=0;
gonzaloMS 0:d644ac0f96b0 107 vecSec[0]=0;
gonzaloMS 0:d644ac0f96b0 108 vecSec[1]=0;
gonzaloMS 0:d644ac0f96b0 109 vecSec[2]=0;
gonzaloMS 0:d644ac0f96b0 110 vecSec[3]=0;
gonzaloMS 0:d644ac0f96b0 111 vecSec2[0]=0;
gonzaloMS 0:d644ac0f96b0 112 vecSec2[1]=0;
gonzaloMS 0:d644ac0f96b0 113 vecSec2[2]=0;
gonzaloMS 0:d644ac0f96b0 114 vecSec2[3]=0;
gonzaloMS 0:d644ac0f96b0 115 vecSec3[0]=0;
gonzaloMS 0:d644ac0f96b0 116 vecSec3[1]=0;
gonzaloMS 0:d644ac0f96b0 117 vecSec3[2]=0;
gonzaloMS 0:d644ac0f96b0 118 vecSec3[3]=0;
gonzaloMS 0:d644ac0f96b0 119 vecSec4[0]=0;
gonzaloMS 0:d644ac0f96b0 120 vecSec4[1]=0;
gonzaloMS 0:d644ac0f96b0 121 vecSec4[2]=0;
gonzaloMS 0:d644ac0f96b0 122 vecSec4[3]=0;
gonzaloMS 0:d644ac0f96b0 123 vecChq[0]=0;
gonzaloMS 0:d644ac0f96b0 124 vecChq[1]=0;
gonzaloMS 0:d644ac0f96b0 125 vecChq[2]=0;
gonzaloMS 0:d644ac0f96b0 126 vecChq[3]=0;
gonzaloMS 0:d644ac0f96b0 127 parpadeoDisplay=0;
gonzaloMS 0:d644ac0f96b0 128 regresor=60;
gonzaloMS 0:d644ac0f96b0 129 g=61;
gonzaloMS 0:d644ac0f96b0 130 win=0;
gonzaloMS 0:d644ac0f96b0 131 fin=0;
gonzaloMS 0:d644ac0f96b0 132 secuencia=INICIO;
gonzaloMS 0:d644ac0f96b0 133 check=BEGGINING;
gonzaloMS 0:d644ac0f96b0 134 }
gonzaloMS 0:d644ac0f96b0 135 }
gonzaloMS 0:d644ac0f96b0 136
gonzaloMS 0:d644ac0f96b0 137 void ganopierdoreaccion()
gonzaloMS 0:d644ac0f96b0 138 {
gonzaloMS 0:d644ac0f96b0 139 if(win==1)
gonzaloMS 0:d644ac0f96b0 140 {
gonzaloMS 0:d644ac0f96b0 141 ledWin=0;
gonzaloMS 0:d644ac0f96b0 142 ledLost=1;
gonzaloMS 0:d644ac0f96b0 143 }
gonzaloMS 0:d644ac0f96b0 144 }
gonzaloMS 0:d644ac0f96b0 145
gonzaloMS 0:d644ac0f96b0 146 void parpadeoFuncion()
gonzaloMS 0:d644ac0f96b0 147 {
gonzaloMS 0:d644ac0f96b0 148 if(fin==1)
gonzaloMS 0:d644ac0f96b0 149 {
gonzaloMS 0:d644ac0f96b0 150 ledLost=!ledLost;
gonzaloMS 0:d644ac0f96b0 151 }
gonzaloMS 0:d644ac0f96b0 152 if(fin==1 || win==1)
gonzaloMS 0:d644ac0f96b0 153 {
gonzaloMS 0:d644ac0f96b0 154 parpadeoDisplay=!parpadeoDisplay;
gonzaloMS 0:d644ac0f96b0 155 }
gonzaloMS 0:d644ac0f96b0 156 }
gonzaloMS 0:d644ac0f96b0 157
gonzaloMS 0:d644ac0f96b0 158 void Chronos()
gonzaloMS 0:d644ac0f96b0 159 {
gonzaloMS 0:d644ac0f96b0 160 if(fin==0 && win==0)
gonzaloMS 0:d644ac0f96b0 161 {
gonzaloMS 0:d644ac0f96b0 162 if(regresor>0)
gonzaloMS 0:d644ac0f96b0 163 {
gonzaloMS 0:d644ac0f96b0 164 regresor--;
gonzaloMS 0:d644ac0f96b0 165 }
gonzaloMS 0:d644ac0f96b0 166 else
gonzaloMS 0:d644ac0f96b0 167 {
gonzaloMS 0:d644ac0f96b0 168 fin=1;
gonzaloMS 0:d644ac0f96b0 169 }
gonzaloMS 0:d644ac0f96b0 170 printf("A lograr: \n");
gonzaloMS 0:d644ac0f96b0 171 printf("%d %d %d %d \n",*vecSec,*(vecSec+1),*(vecSec+2),*(vecSec+3));
gonzaloMS 0:d644ac0f96b0 172 printf("%d %d %d %d \n",*vecSec2,*(vecSec2+1),*(vecSec2+2),*(vecSec2+3));
gonzaloMS 0:d644ac0f96b0 173 printf("%d %d %d %d \n",*vecSec3,*(vecSec3+1),*(vecSec3+2),*(vecSec3+3));
gonzaloMS 0:d644ac0f96b0 174 printf("%d %d %d %d \n",*vecSec4,*(vecSec4+1),*(vecSec4+2),*(vecSec4+3));
gonzaloMS 0:d644ac0f96b0 175 }
gonzaloMS 0:d644ac0f96b0 176 }
gonzaloMS 0:d644ac0f96b0 177
gonzaloMS 0:d644ac0f96b0 178 void theviewer()
gonzaloMS 0:d644ac0f96b0 179 {
gonzaloMS 0:d644ac0f96b0 180 Decenas=regresor/10;
gonzaloMS 0:d644ac0f96b0 181 Unidades=regresor-((regresor/10)*10);
gonzaloMS 0:d644ac0f96b0 182 if(parpadeoDisplay==0)
gonzaloMS 0:d644ac0f96b0 183 {
gonzaloMS 0:d644ac0f96b0 184 if(parimpar%2==0)
gonzaloMS 0:d644ac0f96b0 185 {
gonzaloMS 0:d644ac0f96b0 186 Displays=numerosD[Decenas];
gonzaloMS 0:d644ac0f96b0 187 }
gonzaloMS 0:d644ac0f96b0 188 else
gonzaloMS 0:d644ac0f96b0 189 {
gonzaloMS 0:d644ac0f96b0 190 Displays=numerosU[Unidades];
gonzaloMS 0:d644ac0f96b0 191 }
gonzaloMS 0:d644ac0f96b0 192 }
gonzaloMS 0:d644ac0f96b0 193 else
gonzaloMS 0:d644ac0f96b0 194 {
gonzaloMS 0:d644ac0f96b0 195 if(parimpar%2==0)
gonzaloMS 0:d644ac0f96b0 196 {
gonzaloMS 0:d644ac0f96b0 197 Displays=0;
gonzaloMS 0:d644ac0f96b0 198 }
gonzaloMS 0:d644ac0f96b0 199 else
gonzaloMS 0:d644ac0f96b0 200 {
gonzaloMS 0:d644ac0f96b0 201 Displays=0;
gonzaloMS 0:d644ac0f96b0 202 }
gonzaloMS 0:d644ac0f96b0 203 }
gonzaloMS 0:d644ac0f96b0 204 if(parimpar==201)
gonzaloMS 0:d644ac0f96b0 205 {
gonzaloMS 0:d644ac0f96b0 206 parimpar=0;
gonzaloMS 0:d644ac0f96b0 207 }
gonzaloMS 0:d644ac0f96b0 208 parimpar++;
gonzaloMS 0:d644ac0f96b0 209 }
gonzaloMS 0:d644ac0f96b0 210
gonzaloMS 0:d644ac0f96b0 211 void chequeo(){
gonzaloMS 0:d644ac0f96b0 212 switch(check)
gonzaloMS 0:d644ac0f96b0 213 {
gonzaloMS 0:d644ac0f96b0 214 default:
gonzaloMS 0:d644ac0f96b0 215 case BEGGINING:
gonzaloMS 0:d644ac0f96b0 216 if(E1!=0 || E2!=0 || E3!=0 || E4!=0)
gonzaloMS 0:d644ac0f96b0 217 {
gonzaloMS 0:d644ac0f96b0 218 check=CHECK1;
gonzaloMS 0:d644ac0f96b0 219 }
gonzaloMS 0:d644ac0f96b0 220 else
gonzaloMS 0:d644ac0f96b0 221 {
gonzaloMS 0:d644ac0f96b0 222 check=BEGGINING;
gonzaloMS 0:d644ac0f96b0 223 }
gonzaloMS 0:d644ac0f96b0 224 break;
gonzaloMS 0:d644ac0f96b0 225
gonzaloMS 0:d644ac0f96b0 226 case CHECK1:
gonzaloMS 0:d644ac0f96b0 227 vecChq[0]=E1;
gonzaloMS 0:d644ac0f96b0 228 vecChq[1]=E2;
gonzaloMS 0:d644ac0f96b0 229 vecChq[2]=E3;
gonzaloMS 0:d644ac0f96b0 230 vecChq[3]=E4;
gonzaloMS 0:d644ac0f96b0 231 if(cantIgual<=2)
gonzaloMS 0:d644ac0f96b0 232 {
gonzaloMS 0:d644ac0f96b0 233 for(i=0;i<4;i++)
gonzaloMS 0:d644ac0f96b0 234 {
gonzaloMS 0:d644ac0f96b0 235 if(vecSec[i]==vecChq[i])
gonzaloMS 0:d644ac0f96b0 236 {
gonzaloMS 0:d644ac0f96b0 237 cantIgual++;
gonzaloMS 0:d644ac0f96b0 238 }
gonzaloMS 0:d644ac0f96b0 239 }
gonzaloMS 0:d644ac0f96b0 240 }
gonzaloMS 0:d644ac0f96b0 241 if(cantIgual!=4)
gonzaloMS 0:d644ac0f96b0 242 {
gonzaloMS 0:d644ac0f96b0 243 check=ENDGAME;
gonzaloMS 0:d644ac0f96b0 244 }
gonzaloMS 0:d644ac0f96b0 245 if(cantIgual==4 && ((E1==0 && E2==0 && E3==0) || (E1==0 && E2==0 && E4==0) || (E1==0 && E3==0 && E4==0) || (E2==0 && E3==0 && E4==0)))
gonzaloMS 0:d644ac0f96b0 246 {
gonzaloMS 0:d644ac0f96b0 247 check=CHECK1;
gonzaloMS 0:d644ac0f96b0 248 }
gonzaloMS 0:d644ac0f96b0 249 else if(cantIgual==4 && ((E1!=0 && E2==0 && E3==0) || (E1==0 && E2!=0 && E3==0) || (E1==0 && E2==0 && E3!=0) || (E1!=0 && E2==0 && E4==0) || (E1==0 && E2!=0 && E4==0) || (E1==0 && E2==0 && E4!=0) || (E1!=0 && E3==0 && E4==0) || (E1==0 && E3!=0 && E4==0) || (E1==0 && E3==0 && E4!=0) || (E2!=0 && E3==0 && E4==0) || (E2==0 && E3!=0 && E4==0) || (E2==0 && E3==0 && E4!=0)))
gonzaloMS 0:d644ac0f96b0 250 {
gonzaloMS 0:d644ac0f96b0 251 check=CHECK2;
gonzaloMS 0:d644ac0f96b0 252 }
gonzaloMS 0:d644ac0f96b0 253 break;
gonzaloMS 0:d644ac0f96b0 254
gonzaloMS 0:d644ac0f96b0 255 case CHECK2:
gonzaloMS 0:d644ac0f96b0 256 vecChq[0]=E1;
gonzaloMS 0:d644ac0f96b0 257 vecChq[1]=E2;
gonzaloMS 0:d644ac0f96b0 258 vecChq[2]=E3;
gonzaloMS 0:d644ac0f96b0 259 vecChq[3]=E4;
gonzaloMS 0:d644ac0f96b0 260 if(cantIgual2<=2)
gonzaloMS 0:d644ac0f96b0 261 {
gonzaloMS 0:d644ac0f96b0 262 for(y=0;y<4;y++)
gonzaloMS 0:d644ac0f96b0 263 {
gonzaloMS 0:d644ac0f96b0 264 if(vecSec2[y]==vecChq[y])
gonzaloMS 0:d644ac0f96b0 265 {
gonzaloMS 0:d644ac0f96b0 266 cantIgual2++;
gonzaloMS 0:d644ac0f96b0 267 }
gonzaloMS 0:d644ac0f96b0 268 }
gonzaloMS 0:d644ac0f96b0 269 }
gonzaloMS 0:d644ac0f96b0 270 if(cantIgual2!=4)
gonzaloMS 0:d644ac0f96b0 271 {
gonzaloMS 0:d644ac0f96b0 272 check=ENDGAME;
gonzaloMS 0:d644ac0f96b0 273 }
gonzaloMS 0:d644ac0f96b0 274 if(cantIgual==4 && ((E1==0 && E2==0) || (E2==0 && E3==0) || (E1==0 && E3==0) || (E1==0 && E4==0) || (E2==0 && E4==0) || (E3==0 && E4==0)))
gonzaloMS 0:d644ac0f96b0 275 {
gonzaloMS 0:d644ac0f96b0 276 check=CHECK2;
gonzaloMS 0:d644ac0f96b0 277 }
gonzaloMS 0:d644ac0f96b0 278 else if(cantIgual==4 && ((E1!=0 && E2==0) || (E1==0 && E2!=0) || (E2!=0 && E3==0) || (E2==0 && E3!=0) || (E1!=0 && E3==0) || (E1==0 && E3!=0) || (E1!=0 && E4==0) || (E1==0 && E4!=0) || (E2!=0 && E4==0) || (E2==0 && E4!=0) || (E3!=0 && E4==0) || (E3==0 && E4!=0) ))
gonzaloMS 0:d644ac0f96b0 279 {
gonzaloMS 0:d644ac0f96b0 280 check=CHECK3;
gonzaloMS 0:d644ac0f96b0 281 }
gonzaloMS 0:d644ac0f96b0 282 break;
gonzaloMS 0:d644ac0f96b0 283
gonzaloMS 0:d644ac0f96b0 284 case CHECK3:
gonzaloMS 0:d644ac0f96b0 285 vecChq[0]=E1;
gonzaloMS 0:d644ac0f96b0 286 vecChq[1]=E2;
gonzaloMS 0:d644ac0f96b0 287 vecChq[2]=E3;
gonzaloMS 0:d644ac0f96b0 288 vecChq[3]=E4;
gonzaloMS 0:d644ac0f96b0 289 if(cantIgual3<=2)
gonzaloMS 0:d644ac0f96b0 290 {
gonzaloMS 0:d644ac0f96b0 291 for(k=0;k<4;k++)
gonzaloMS 0:d644ac0f96b0 292 {
gonzaloMS 0:d644ac0f96b0 293 if(vecSec3[k]==vecChq[k])
gonzaloMS 0:d644ac0f96b0 294 {
gonzaloMS 0:d644ac0f96b0 295 cantIgual3++;
gonzaloMS 0:d644ac0f96b0 296 }
gonzaloMS 0:d644ac0f96b0 297 }
gonzaloMS 0:d644ac0f96b0 298 }
gonzaloMS 0:d644ac0f96b0 299 if(cantIgual3!=4)
gonzaloMS 0:d644ac0f96b0 300 {
gonzaloMS 0:d644ac0f96b0 301 check=ENDGAME;
gonzaloMS 0:d644ac0f96b0 302 }
gonzaloMS 0:d644ac0f96b0 303 if(cantIgual3==4 && (E1==0 || E2==0 || E3==0 || E4==0))
gonzaloMS 0:d644ac0f96b0 304 {
gonzaloMS 0:d644ac0f96b0 305 check=CHECK3;
gonzaloMS 0:d644ac0f96b0 306 }
gonzaloMS 0:d644ac0f96b0 307 if(cantIgual3==4 && E1==1 && E2==1 && E3==1 && E4==1)
gonzaloMS 0:d644ac0f96b0 308 {
gonzaloMS 0:d644ac0f96b0 309 check=WINGAME;
gonzaloMS 0:d644ac0f96b0 310 }
gonzaloMS 0:d644ac0f96b0 311 break;
gonzaloMS 0:d644ac0f96b0 312
gonzaloMS 0:d644ac0f96b0 313 case ENDGAME:
gonzaloMS 0:d644ac0f96b0 314 fin=1;
gonzaloMS 0:d644ac0f96b0 315 check=ENDGAME;
gonzaloMS 0:d644ac0f96b0 316 break;
gonzaloMS 0:d644ac0f96b0 317
gonzaloMS 0:d644ac0f96b0 318 case WINGAME:
gonzaloMS 0:d644ac0f96b0 319 win=1;
gonzaloMS 0:d644ac0f96b0 320 check=WINGAME;
gonzaloMS 0:d644ac0f96b0 321 break;
gonzaloMS 0:d644ac0f96b0 322 }
gonzaloMS 0:d644ac0f96b0 323 }
gonzaloMS 0:d644ac0f96b0 324
gonzaloMS 0:d644ac0f96b0 325 void generacion(){
gonzaloMS 0:d644ac0f96b0 326 switch(secuencia)
gonzaloMS 0:d644ac0f96b0 327 {
gonzaloMS 0:d644ac0f96b0 328 default:
gonzaloMS 0:d644ac0f96b0 329
gonzaloMS 0:d644ac0f96b0 330 case INICIO:
gonzaloMS 0:d644ac0f96b0 331 gSec1=0;
gonzaloMS 0:d644ac0f96b0 332 gSec2=0;
gonzaloMS 0:d644ac0f96b0 333 gSec3=0;
gonzaloMS 0:d644ac0f96b0 334 secuencia=GENERA1;
gonzaloMS 0:d644ac0f96b0 335 break;
gonzaloMS 0:d644ac0f96b0 336
gonzaloMS 0:d644ac0f96b0 337 case GENERA1:
gonzaloMS 0:d644ac0f96b0 338 gSec1=rand()%4+1;
gonzaloMS 0:d644ac0f96b0 339 if(gSec1==1)
gonzaloMS 0:d644ac0f96b0 340 {
gonzaloMS 0:d644ac0f96b0 341 vecSec[0]++;
gonzaloMS 0:d644ac0f96b0 342 }
gonzaloMS 0:d644ac0f96b0 343 else if(gSec1==2)
gonzaloMS 0:d644ac0f96b0 344 {
gonzaloMS 0:d644ac0f96b0 345 vecSec[1]++;
gonzaloMS 0:d644ac0f96b0 346 }
gonzaloMS 0:d644ac0f96b0 347 else if(gSec1==3)
gonzaloMS 0:d644ac0f96b0 348 {
gonzaloMS 0:d644ac0f96b0 349 vecSec[2]++;
gonzaloMS 0:d644ac0f96b0 350 }
gonzaloMS 0:d644ac0f96b0 351 else if(gSec1==4)
gonzaloMS 0:d644ac0f96b0 352 {
gonzaloMS 0:d644ac0f96b0 353 vecSec[3]++;
gonzaloMS 0:d644ac0f96b0 354 }
gonzaloMS 0:d644ac0f96b0 355 secuencia=GENERA2;
gonzaloMS 0:d644ac0f96b0 356 break;
gonzaloMS 0:d644ac0f96b0 357
gonzaloMS 0:d644ac0f96b0 358 case GENERA2:
gonzaloMS 0:d644ac0f96b0 359 gSec2=rand()%4+1;
gonzaloMS 0:d644ac0f96b0 360 vecSec2[0]=vecSec[0];
gonzaloMS 0:d644ac0f96b0 361 vecSec2[1]=vecSec[1];
gonzaloMS 0:d644ac0f96b0 362 vecSec2[2]=vecSec[2];
gonzaloMS 0:d644ac0f96b0 363 vecSec2[3]=vecSec[3];
gonzaloMS 0:d644ac0f96b0 364 if(gSec2==1)
gonzaloMS 0:d644ac0f96b0 365 {
gonzaloMS 0:d644ac0f96b0 366 if(vecSec2[0]==1)
gonzaloMS 0:d644ac0f96b0 367 {
gonzaloMS 0:d644ac0f96b0 368 secuencia=GENERA2;
gonzaloMS 0:d644ac0f96b0 369 }
gonzaloMS 0:d644ac0f96b0 370 else
gonzaloMS 0:d644ac0f96b0 371 {
gonzaloMS 0:d644ac0f96b0 372 vecSec2[0]++;
gonzaloMS 0:d644ac0f96b0 373 }
gonzaloMS 0:d644ac0f96b0 374 }
gonzaloMS 0:d644ac0f96b0 375 else if(gSec2==2)
gonzaloMS 0:d644ac0f96b0 376 {
gonzaloMS 0:d644ac0f96b0 377 if(vecSec2[1]==1)
gonzaloMS 0:d644ac0f96b0 378 {
gonzaloMS 0:d644ac0f96b0 379 secuencia=GENERA2;
gonzaloMS 0:d644ac0f96b0 380 }
gonzaloMS 0:d644ac0f96b0 381 else
gonzaloMS 0:d644ac0f96b0 382 {
gonzaloMS 0:d644ac0f96b0 383 vecSec2[1]++;
gonzaloMS 0:d644ac0f96b0 384 }
gonzaloMS 0:d644ac0f96b0 385 }
gonzaloMS 0:d644ac0f96b0 386 else if(gSec2==3)
gonzaloMS 0:d644ac0f96b0 387 {
gonzaloMS 0:d644ac0f96b0 388 if(vecSec2[2]==1)
gonzaloMS 0:d644ac0f96b0 389 {
gonzaloMS 0:d644ac0f96b0 390 secuencia=GENERA2;
gonzaloMS 0:d644ac0f96b0 391 }
gonzaloMS 0:d644ac0f96b0 392 else
gonzaloMS 0:d644ac0f96b0 393 {
gonzaloMS 0:d644ac0f96b0 394 vecSec2[2]++;
gonzaloMS 0:d644ac0f96b0 395 }
gonzaloMS 0:d644ac0f96b0 396 }
gonzaloMS 0:d644ac0f96b0 397 else if(gSec2==4)
gonzaloMS 0:d644ac0f96b0 398 {
gonzaloMS 0:d644ac0f96b0 399 if(vecSec2[3]==1)
gonzaloMS 0:d644ac0f96b0 400 {
gonzaloMS 0:d644ac0f96b0 401 secuencia=GENERA2;
gonzaloMS 0:d644ac0f96b0 402 }
gonzaloMS 0:d644ac0f96b0 403 else
gonzaloMS 0:d644ac0f96b0 404 {
gonzaloMS 0:d644ac0f96b0 405 vecSec2[3]++;
gonzaloMS 0:d644ac0f96b0 406 }
gonzaloMS 0:d644ac0f96b0 407 }
gonzaloMS 0:d644ac0f96b0 408 if((vecSec2[0]+vecSec2[1]+vecSec2[2]+vecSec2[3]) == 2)
gonzaloMS 0:d644ac0f96b0 409 {
gonzaloMS 0:d644ac0f96b0 410 secuencia=GENERA3;
gonzaloMS 0:d644ac0f96b0 411 }
gonzaloMS 0:d644ac0f96b0 412 else
gonzaloMS 0:d644ac0f96b0 413 {
gonzaloMS 0:d644ac0f96b0 414 secuencia=GENERA2;
gonzaloMS 0:d644ac0f96b0 415 }
gonzaloMS 0:d644ac0f96b0 416 break;
gonzaloMS 0:d644ac0f96b0 417
gonzaloMS 0:d644ac0f96b0 418 case GENERA3:
gonzaloMS 0:d644ac0f96b0 419 gSec3=rand()%4+1;
gonzaloMS 0:d644ac0f96b0 420 vecSec3[0]=vecSec2[0];
gonzaloMS 0:d644ac0f96b0 421 vecSec3[1]=vecSec2[1];
gonzaloMS 0:d644ac0f96b0 422 vecSec3[2]=vecSec2[2];
gonzaloMS 0:d644ac0f96b0 423 vecSec3[3]=vecSec2[3];
gonzaloMS 0:d644ac0f96b0 424 if(gSec3==1)
gonzaloMS 0:d644ac0f96b0 425 {
gonzaloMS 0:d644ac0f96b0 426 if(vecSec3[0]==1)
gonzaloMS 0:d644ac0f96b0 427 {
gonzaloMS 0:d644ac0f96b0 428 secuencia=GENERA3;
gonzaloMS 0:d644ac0f96b0 429 }
gonzaloMS 0:d644ac0f96b0 430 else
gonzaloMS 0:d644ac0f96b0 431 {
gonzaloMS 0:d644ac0f96b0 432 vecSec3[0]++;
gonzaloMS 0:d644ac0f96b0 433 }
gonzaloMS 0:d644ac0f96b0 434 }
gonzaloMS 0:d644ac0f96b0 435 else if(gSec3==2)
gonzaloMS 0:d644ac0f96b0 436 {
gonzaloMS 0:d644ac0f96b0 437 if(vecSec3[1]==1)
gonzaloMS 0:d644ac0f96b0 438 {
gonzaloMS 0:d644ac0f96b0 439 secuencia=GENERA3;
gonzaloMS 0:d644ac0f96b0 440 }
gonzaloMS 0:d644ac0f96b0 441 else
gonzaloMS 0:d644ac0f96b0 442 {
gonzaloMS 0:d644ac0f96b0 443 vecSec3[1]++;
gonzaloMS 0:d644ac0f96b0 444 }
gonzaloMS 0:d644ac0f96b0 445 }
gonzaloMS 0:d644ac0f96b0 446 else if(gSec3==3)
gonzaloMS 0:d644ac0f96b0 447 {
gonzaloMS 0:d644ac0f96b0 448 if(vecSec3[2]==1)
gonzaloMS 0:d644ac0f96b0 449 {
gonzaloMS 0:d644ac0f96b0 450 secuencia=GENERA3;
gonzaloMS 0:d644ac0f96b0 451 }
gonzaloMS 0:d644ac0f96b0 452 else
gonzaloMS 0:d644ac0f96b0 453 {
gonzaloMS 0:d644ac0f96b0 454 vecSec3[2]++;
gonzaloMS 0:d644ac0f96b0 455 }
gonzaloMS 0:d644ac0f96b0 456 }
gonzaloMS 0:d644ac0f96b0 457 else if(gSec3==4)
gonzaloMS 0:d644ac0f96b0 458 {
gonzaloMS 0:d644ac0f96b0 459 if(vecSec3[3]==1)
gonzaloMS 0:d644ac0f96b0 460 {
gonzaloMS 0:d644ac0f96b0 461 secuencia=GENERA3;
gonzaloMS 0:d644ac0f96b0 462 }
gonzaloMS 0:d644ac0f96b0 463 else
gonzaloMS 0:d644ac0f96b0 464 {
gonzaloMS 0:d644ac0f96b0 465 vecSec3[3]++;
gonzaloMS 0:d644ac0f96b0 466 }
gonzaloMS 0:d644ac0f96b0 467 }
gonzaloMS 0:d644ac0f96b0 468 if((vecSec3[0]+vecSec3[1]+vecSec3[2]+vecSec3[3]) == 3)
gonzaloMS 0:d644ac0f96b0 469 {
gonzaloMS 0:d644ac0f96b0 470 secuencia=FIN;
gonzaloMS 0:d644ac0f96b0 471 }
gonzaloMS 0:d644ac0f96b0 472 else
gonzaloMS 0:d644ac0f96b0 473 {
gonzaloMS 0:d644ac0f96b0 474 secuencia=GENERA3;
gonzaloMS 0:d644ac0f96b0 475 }
gonzaloMS 0:d644ac0f96b0 476 break;
gonzaloMS 0:d644ac0f96b0 477
gonzaloMS 0:d644ac0f96b0 478 case FIN:
gonzaloMS 0:d644ac0f96b0 479 vecSec4[0]=1;
gonzaloMS 0:d644ac0f96b0 480 vecSec4[1]=1;
gonzaloMS 0:d644ac0f96b0 481 vecSec4[2]=1;
gonzaloMS 0:d644ac0f96b0 482 vecSec4[3]=1;
gonzaloMS 0:d644ac0f96b0 483 secuencia=FIN;
gonzaloMS 0:d644ac0f96b0 484 break;
gonzaloMS 0:d644ac0f96b0 485 }
gonzaloMS 0:d644ac0f96b0 486 }