Beispielprogramm zur Benutzung der Jagdsignale
int B_Rechts = 0b010;
int B_Links = 0b001;
int B_Heck = 0b100;
int frei = 0;
int crash_rechts = 1;
int crash_links = 2;
int crash_vorn = 3;
int crash_hinten = 4;
int crash_hinten_rechts = 5;
int crash_hinten_links = 6;
int robbi_explodiert = 7;
/* Liest aus welche Bumper ausgeloest haben und */
/* ermittelt daraus die "Unfallstelle". */
int crash()
{
int bumpers = bumper();
if (bumpers == 0)
return frei;
else if (bumpers == (B_Rechts | B_Links))
return crash_vorn;
else if (bumpers == B_Rechts)
return crash_rechts;
else if (bumpers == B_Links)
return crash_links;
else if (bumpers == B_Heck)
return crash_hinten;
else if (bumpers == (B_Heck | B_Rechts))
return crash_hinten_rechts;
else if (bumpers == (B_Heck | B_Links))
return crash_hinten_links;
else
return robbi_explodiert;
}
/* Berechnet Zufallswert im Bereich [0..range-1] */
int rand(int range)
{
int rnd = (int)mseconds();
if (rnd >= 0)
return (rnd % range);
else
return (-rnd % range);
}
void main()
{
int i, error, cli, action = 0;
/* int mode ist global als persistente Variable deklariert. */
/* Zwischen den Modi 1 und 2 wird durch druecken des */
/* Reset-Knopfes gewechselt. */
if ( mode == 1 )
{
mode = 2; /* Mode nach dem naechsten Reset wechseln. */
while (1) /* bis zum naechsten Reset */
{
msleep(1000L); /* 1 Sekunde warten ... */
Stosse_ins_Horn(rand(8)); /* ... und schon wieder ein Signal! */
}
}
else if ( mode == 2 )
{
mode = 1; /* Mode nach dem naechsten Reset wechseln. */
while(1) /* bis zum naechsten Reset */
{
/* Hinten antippen zum ausloesen des Signals */
if(crash() == crash_hinten)
{
/* Schalterprellen abfangen */
msleep(100L);
while(crash());
/* Troeh-Roeh */
Stosse_ins_Horn(action);
}
/* Rechts antippen zum hochzaehlen */
if(crash() == crash_rechts)
{
/* Schalterprellen abfangen ... */
msleep(100L);
while(crash());
/* ... und raufzaehlen */
printf("%d\n",++action);
}
/* Links antippen zum runterzaehlen */
if(crash() == crash_links)
{
/* Schalterprellen abfangen ... */
msleep(100L);
while(crash());
/* und runterzaehlen */
printf("%d\n",--action);
}
}
}
else
mode = 2; /* Init der Variable mode beim ersten Durchlauf */
}
© Gunnar Mecke,
Letzte Änderung: 29.09.97
Zurück zu den Jagdmelodien