a

Dependencies:   Led-libary TextLCD mbed

Fork of Mbed-Mensch-8 by Projekte_werkstatt

Revision:
22:2d75e7ec402f
Parent:
21:374e9aed07d9
Child:
23:fd15b2f8cf08
--- a/main.cpp	Fri Apr 01 16:04:34 2016 +0000
+++ b/main.cpp	Fri Apr 08 06:59:10 2016 +0000
@@ -110,7 +110,8 @@
 //Farben
 uint32_t Farben[Spieler];      //Berechnete Hellichkeiten der Speiler fertig zur Ausgabe...
 uint32_t Background = 0;       //Hintergrund (Leerfeld)
-uint32_t DiseC = 0x00FF00;     //Würfelfarbe
+uint32_t DiceC = 0x00FF00;     //Würfelfarbe
+uint32_t TestC = 0xFFFFFF;     //TestFarbe
 void ColorPrint(uint32_t color); //vorher den Header senden (manuell...)
 
 char DD_last;
@@ -349,21 +350,21 @@
     Farben[2]=0x0000FF;//Grun
     Farben[3]=0x00FFFF;//Gelb
     Background = 0;    //Schwarz
-    DiseC = 0x00FF00;  //Rot
+    DiceC = 0x00FF00;  //Rot
     */
     Farben[0]=0x000800;//Rot
     Farben[1]=0x080000;//Blau
     Farben[2]=0x000008;//Grun
     Farben[3]=0x000808;//Gelb
     Background = 0;    //Schwarz
-    DiseC = 0x000800;  //Rot
+    DiceC = 0x000800;  //Rot
     /*
     Farben[0]=0xFFFFFF;//Weiß
     Farben[1]=0xFFFFFF;//Weiß
     Farben[2]=0xFFFFFF;//Weiß
     Farben[3]=0xFFFFFF;//Weiß
     Background = 0xFFFFFF;//Weiß
-    DiseC = 0xFFFFFF;  //Weiß
+    DiceC = 0xFFFFFF;  //Weiß
     */
 
     __disable_irq();
@@ -496,6 +497,16 @@
         myled=(myled&0xFF0);
         myled=(myled&0x0FF)|(0x100<<Drann);
         port.printf("W%c%c\n",27,27);
+        __disable_irq();
+        for (char i = 0; i < 9; i++)
+            Dice.WriteLed(Background);
+        for (char i = 0; i < 4; i++)
+            if(Drann==i)
+                Dice.WriteLed(Farben[i]);
+            else
+                Dice.WriteLed(Background);
+        Dice.WriteLed(Background);
+        __enable_irq();
         break;
         case 1: //Animation
         char dice_help = 0xFF-(1<<dicePos);
@@ -503,24 +514,71 @@
         //myled = (myled&0xF)|(dice_help<<4);
         
         port.printf("W%c%c\n" , 27 + diceTick+((dice_help&0x1F)<<1),27 + ((dice_help& 0xE0)>>5));
+        __disable_irq();
+        if(diceTick)
+            Dice.WriteLed(DiceC);
+        else
+            Dice.WriteLed(Background);
+        for (char i = 0; i < 8; i++)
+            if(dice_help&(1<<i))
+                Dice.WriteLed(DiceC);
+            else
+                Dice.WriteLed(Background);
+        __enable_irq();
         break;
         case 2://Case 3 = Case 2 ->Anzeigen
         myled=(myled&0xFF0)|(diceNum);
         //myled=myled|0xFF0;
         
         port.printf("W%c%c\n" , 27 +(diceDecode[diceNum-1]&0x3F),27 + ((diceDecode[diceNum-1]&0x1C0)>>6));
+        __disable_irq();
+        for (char i = 0; i < 9; i++)
+            if(diceDecode[diceNum-1]&(1<<i))
+                Dice.WriteLed(DiceC);
+            else
+                Dice.WriteLed(Background);
+        __enable_irq();
         break;
         case 3:
         myled=(myled&0xFF0)|(diceNum)|8;
         //myled=myled|0xFF0;
         
         port.printf("W%c%c\n" , 27 +(diceDecode[diceNum-1]&0x3F),27 + ((diceDecode[diceNum-1]&0x1C0)>>6));
+        __disable_irq();
+        for (char i = 0; i < 9; i++)
+            if(diceDecode[diceNum-1]&(1<<i))
+                Dice.WriteLed(DiceC);
+            else
+                Dice.WriteLed(Background);
+        __enable_irq();
         break;
-        case 4://Spiel beendet! Animation?
+        case 4://Spiel beendet!
         myled=(myled&0xFF0);
         port.printf("W%c%c\n",27,27);
+        __disable_irq();
+        for (char i = 0; i < 14; i++)
+            Dice.WriteLed(Background);
+        __enable_irq();
         break;
         case 5://Menu
+        if(diceTick)
+            port.printf("W%c%c\n" , 27 +(diceDecode[6]&0x3F),27 + ((diceDecode[6]&0x1C0)>>6));
+        else
+            port.printf("W%c%c\n",27,27);
+        __disable_irq();
+        if(diceTick)
+            for (char i = 0; i < 9; i++)
+                if(diceDecode[6]&(1<<i))
+                    Dice.WriteLed(DiceC);
+                else
+                    Dice.WriteLed(Background);
+        else
+            for (char i = 0; i < 9; i++)
+                Dice.WriteLed(Background);
+        for (char i = 0; i < 4; i++)
+            Dice.WriteLed(Background);
+        Dice.WriteLed(TestC);
+        __enable_irq();
         break;
     }
 }
@@ -1286,6 +1344,8 @@
         diceEn=5;
         DicePrint();
         //StartMenu-Anim
+        diceTick=0;
+        DiceAnim.attach(&DiceRun,0.3);
     }
     posUpdate();
     port.printf("Lpostion:0x%x\n",postion);
@@ -1307,6 +1367,12 @@
     }
     if(depth==0)
     {
+        DiceAnim.detach();
+        diceTick=0;
+        char temp = diceEn;
+        diceEn=0;
+        DicePrint();
+        diceEn=temp;
         if(mDiceEn<5)
         {
             diceEn=mDiceEn;
@@ -1314,6 +1380,7 @@
                 MoveAnim.attach(&MoveRun,0.3);
             mDiceEn=5;
         }
+        DicePrint();
     }
     posUpdate();
     ausfuehren(postion);