Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Led-libary TextLCD mbed
Fork of Laufled 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++;
}
}
}
