Projekte_werkstatt
/
Mbed-Mensch-3-Menu
Fork of Mbed-Mensch-1 by
Diff: main.cpp
- Revision:
- 2:3a90b20958ff
- Parent:
- 1:0eaa7682f7e1
- Child:
- 3:814d47b6991c
diff -r 0eaa7682f7e1 -r 3a90b20958ff main.cpp --- a/main.cpp Thu Feb 04 15:51:34 2016 +0000 +++ b/main.cpp Fri Feb 05 09:17:21 2016 +0000 @@ -69,6 +69,7 @@ PlayPos[i]=i%4; Drann=0; diceEn=0; + myled = myled&0xF0F; DicePrint(); rgb.set_RGB(0); FieldGenerate(); @@ -78,12 +79,13 @@ void btn2() { - diceEn=0; - Drann=2; - PlayPos[4]=14; + Drann = 0; + PlayPos[1]=Steine+Feldgrose*Spieler; + PlayPos[2]=5; FieldGenerate(); FieldPrint(); - FeldPrint(); + FeldPrint(); + } void btn3() { @@ -468,7 +470,7 @@ char drausen = 0; //Ziel char feld = 0; char drinnen = 0; //start - char moglichAny = 0; + char moglichAny = 1; for(char i = 0;i<Steine;i++) { if(PlayPos[(Drann<<2)|i]>3) @@ -483,45 +485,79 @@ moglich[i]=0; } //Berechnung - if((drinnen>0)&&((((Field[Feldgrose*Drann]-1) &0x0C) >>2)==Drann)&&(Field[Feldgrose*Drann]>0)) - {//Ausfahren - moglich[(Field[Feldgrose*Drann]-1) &0x03] = 1; + //Ausfahren: + //drinnen >0 (Noch Spieler drinnen?) + //Startfeld ist von Spieler belegt + //Ziel ist frei + if((drinnen>0)&&(moglichAny)) + { + port.printf("LDrinnen\n"); + if(((((Field[Feldgrose*Drann]-1) &0x0C) >>2)==Drann)&&(Field[Feldgrose*Drann]>0)) + { + port.printf("LAusfahrt Belegt\n"); + if(((((Field[(Feldgrose*Drann+diceNum)%(Feldgrose*Spieler)]-1) &0x0C) >>2)!=Drann)||(Field[(Feldgrose*Drann+diceNum)%(Feldgrose*Spieler)]==0)) + { + port.printf("LZiel frei (Done)\n"); + moglich[(Field[Feldgrose*Drann]-1) &0x03] = 1; + moglichAny=0; + } + } } - else + + //Ansetzen + // 6 gewürfelt + //drinnen>0 + //Start-feld ist nicht von Spieler belegt + if((drinnen>0)&&(moglichAny)&&(diceNum==6)) { - if((diceNum==6)&&(drinnen>0)) //Ansetzen + port.printf("LDrinnen & 6 \n"); + if(((((Field[Feldgrose*Drann]-1) &0x0C) >>2)!=Drann)||(Field[Feldgrose*Drann]==0)) { + port.printf("LAusfahrt frei (Done...Schleife)\n"); + moglichAny=0; for(char i = 0;i<Steine;i++) if(PlayPos[(Drann<<2)|i]<Steine) moglich[i]=1; } - else //'normal' + } + + //Fahren + if(moglichAny) + { + port.printf("LNormal...\n"); + for(char i = 0;i<Steine;i++) { - for(char i = 0;i<Steine;i++) + if(PlayPos[(Drann<<2)|i]>Spieler-1) //Drausen { - if(PlayPos[(Drann<<2)|i]>Spieler-1) + if((PlayPos[(Drann<<2)|i]- Steine + Feldgrose * Drann+diceNum)<(Steine + Feldgrose *Spieler))//Zeil noch am Feld { - char temp = Field[(PlayPos[(Drann<<2)|i]- Steine + Feldgrose * Drann+diceNum) % (Feldgrose*Steine)]; + char temp = Field[(PlayPos[(Drann<<2)|i]- Steine + Feldgrose * Drann+diceNum) % (Feldgrose*Steine)]; //zielfeld if(temp>0) { //myled = myled|temp<<8; temp--; //(Spieler<<2)|Stein temp = (temp&0xC)>>2;//Spieler - if(!(temp==Drann)) + if(temp!=Drann) //zielfeld ist nicht ich moglich[i]=1; } - else + else//Feld ist leer moglich[i]=1; } + else + {//Kollisionsberechnung ins Ziel... + + } } } } - + + moglichAny=0; myled = myled&0xF0F; for(char i = 0;i<Steine;i++) + { myled = myled|(moglich[i]<<i+4); - for(char i = 0;i<Steine;i++) moglichAny = moglichAny | moglich[i]; + } if(moglichAny) { selected = (last[Drann]+Steine-1)%Steine; @@ -534,8 +570,8 @@ diceEn = 1; else { - diceEn=0; - count++; + diceEn=0; + count++; } } }