Dependencies:   Led-libary TextLCD mbed

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();
     }