a
Dependencies: Led-libary TextLCD mbed
Fork of Mbed-Mensch-8 by
Diff: main.cpp
- Revision:
- 8:8feae8c8ec8a
- Parent:
- 7:6b4048a2b9ff
- Child:
- 9:cb931ad9731d
--- a/main.cpp Sat Mar 12 17:17:46 2016 +0000 +++ b/main.cpp Sat Mar 12 20:01:53 2016 +0000 @@ -238,13 +238,28 @@ port.baud(76800); port.format(8,Serial::None, 1); port.attach(&Control); - + /* Farben[0]=0x00FF00;//Rot Farben[1]=0xFF0000;//Blau Farben[2]=0x0000FF;//Grun Farben[3]=0x00FFFF;//Gelb Background = 0; //Schwarz DiseC = 0x00FF00; //Rot + */ + Farben[0]=0x000800;//Rot + Farben[1]=0x080000;//Blau + Farben[2]=0x000008;//Grun + Farben[3]=0x000808;//Gelb + Background = 0; //Schwarz + DiseC = 0x000800; //Rot + /* + Farben[0]=0xFFFFFF;//Weiß + Farben[1]=0xFFFFFF;//Weiß + Farben[2]=0xFFFFFF;//Weiß + Farben[3]=0xFFFFFF;//Weiß + Background = 0xFFFFFF;//Weiß + DiseC = 0xFFFFFF; //Weiß + */ __disable_irq(); for(char i = 0;i<Spieler;i++) @@ -372,18 +387,18 @@ { switch(diceEn) { - case 0: + case 0: //Schwarz & Drann überschreiben... myled=(myled&0xFF0); port.printf("W%c%c\n",27,27); break; - case 1: + case 1: //Animation char dice_help = 0xFF-(1<<dicePos); myled=(myled&0xFF0)|(5)|(diceTick<<1); //myled = (myled&0xF)|(dice_help<<4); port.printf("W%c%c\n" , 27 + diceTick+((dice_help&0x1F)<<1),27 + ((dice_help& 0xE0)>>5)); break; - case 2://Case 3 = Case 2 + case 2://Case 3 = Case 2 ->Anzeigen myled=(myled&0xFF0)|(diceNum); //myled=myled|0xFF0; @@ -395,6 +410,10 @@ port.printf("W%c%c\n" , 27 +(diceDecode[diceNum-1]&0x3F),27 + ((diceDecode[diceNum-1]&0x1C0)>>6)); break; + case 4://Spiel beendet! Animation? + myled=(myled&0xFF0); + port.printf("W%c%c\n",27,27); + break; } } @@ -673,9 +692,9 @@ char moglichAny = 1; for(char i = 0;i<Steine;i++) { - if(PlayPos[(Drann<<2)|i]>3) + if(PlayPos[(Drann<<2)|i]>=Steine) { - if(PlayPos[(Drann<<2)|i] > 43) + if(PlayPos[(Drann<<2)|i] >= (Steine+Spieler*Feldgrose)) drausen++; else feld++; @@ -753,6 +772,8 @@ } } + + //Anzeigen der Möglichkeiten & überhaupt möglich? moglichAny=0; myled = myled&0xF0F; for(char i = 0;i<Steine;i++) @@ -760,23 +781,22 @@ myled = myled|(moglich[i]<<i+4); moglichAny = moglichAny | moglich[i]; } - if(moglichAny) + + if(moglichAny) //Fahren möglich { selected = (last[Drann]+Steine-1)%Steine; moveNext(); MoveAnim.attach(&MoveRun,0.3); } - else + else //Fahren nicht möglich { - if(feld) - diceEn = 1; - else + if(feld<=0) //keine am Feld { if(count<2) { diceEn=0; count++; - port.printf("LCount: %d\n",count); + //port.printf("LCount: %d\n",count); } } } @@ -784,7 +804,7 @@ void MoveDo() { - if(diceEn>1) + if((diceEn>1)&(diceEn<4)) { if(moglich[selected]==1) { @@ -820,15 +840,37 @@ } MoveAnim.detach(); last[Drann]=selected; - if(diceNum<6) + myled = myled&0xF0F; + count = 0; + FieldGenerate(); + //Check for Win! + char temp = 0; + char j = 0; + char running = 1; + do { - Drann = (Drann+1)%Spieler; + for (char i = 0; i < Steine; i++) + if (Ziel[(Drann<<2)|i]>0) + temp++; + if((temp==4)&(diceEn>1)) + port.printf("LSpieler %d hat das Spiel beendet!\n",Drann); + if(temp==4) + Drann = (Drann+1)%Spieler; + else + { + running = 0; + if(diceNum<6) + Drann = (Drann+1)%Spieler; + } + diceEn = 0; + j++; + }while((j<4)&(running>0)); + if(running==1) + { + port.printf("LSpiel beendet!\n"); + diceEn = 4; } - diceEn = 0; - count = 0; DicePrint(); - myled = myled&0xF0F; - FieldGenerate(); FieldPrint(); FeldPrint(); }