Inhaltsverzeichnis
Solorennen
// Anzahl der Schritte Minimum/Maximum
int Minimum = 1;
int Maximum = 4;
// Schritte bis zum Ziel
int Ziel = 10;
int BisherigeSchritte = 0;
int Schritte = 0;
long Start;
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
// Info über das Spiel
Serial.println("Schneckenrennen");
Serial.println("-------------------------------------------");
// \n = neue Zeile
Serial.println("Ziel: " + String(Ziel));
Serial.println("-------------------------------------------");
// Zufallsgenerator starten
randomSeed(analogRead(A0));
// Zeitmessung starten
Start = millis();
}
void loop()
{
// auf serielle Eingabe warten
while (Serial.available() > 0)
{
// Eingabe im Seriellen Monitor lesen
char Zeichen = Serial.read();
// Enter/Senden gedrückt
if (Zeichen == '\n')
{
// Anzahl der Schritte zufällig ermitteln
Schritte = ZufallsZahl(Minimum, Maximum);
// Summe der Schritte berechnen
BisherigeSchritte = BisherigeSchritte + Schritte;
// Aufruf der Methode Bildschirmausgabe
Bildschirmausgabe(BisherigeSchritte);
if (BisherigeSchritte > Ziel)
{
Serial.println("Ziel erreicht!");
// Zeit berechnen
int Sekunden;
long VerstricheneZeit = millis() - Start;
Sekunden = int(VerstricheneZeit / 1000);
Serial.println("Zeit: " + String(Sekunden) + " Sekunden");
// Variablen zurücksetzen
BisherigeSchritte = 0;
Start = millis();
}
}
}
}
int ZufallsZahl(int Minimum, int Maximum)
{
int Zahl = random(Minimum, Maximum);
return Zahl;
}
void Bildschirmausgabe(int AnzahlSchritte)
{
// entsprechend der Anzahl der Schritte Zeichen anzeigen
for (int i = 0; i < AnzahlSchritte; i ++)
{
Serial.print("► ");
}
Serial.println("(" + String(AnzahlSchritte) + ")");
}
Zwei Schnecken
// Anzahl der Schritte Minimum/Maximum
int Minimum = 1;
int Maximum = 4;
// Schritte bis zum Ziel
int Ziel = 10;
int Schritte = 0;
int Runde = 1;
// wenn Neustart = true -> Variable zurücksetzen
bool Neustart = false;
/*
Arrays für die Schnecken
BisherigeSchritte[] -> Anzahl zurückgelegter Schritte
Schnecke[] -> Namen der Schnecken
SchrittZeichen[] -> Zeichen für die zurückgelegten Schritte
es können (fast) beliebige Zeichen verwendet werden
*/
int BisherigeSchritte[2];
String Schnecke[2] = {"Lisa", "Karl"};
String SchrittZeichen[2] = {"> ", "+ "};
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
// Info über das Spiel
Serial.println("Schneckenrennen");
Serial.println("Schnecken: " + Schnecke[0] + " und " + Schnecke[1]);
Serial.println("Ziel: " + String(Ziel));
Serial.println("Tasten:\nw -> weiter\nn -> Neustart");
Serial.println("-------------------------------------------");
// Zufallsgenerator starten
randomSeed(analogRead(A0));
}
void loop()
{
// auf serielle Eingabe warten
while (Serial.available() > 0)
{
// Eingabe im Seriellen Monitor lesen
char Zeichen = Serial.read();
// Enter/Senden gedrückt
if (Zeichen == 'n')
{
Neustart = true;
}
if (Zeichen == 'w')
{
// beim Neustart -> alle Variable zurücksetzen
if (Neustart)
{
BisherigeSchritte[0] = 0;
BisherigeSchritte[1] = 0;
Runde = 1;
Neustart = false;
}
Serial.println("Runde " + String(Runde));
// Schnecke 1
// Anzahl der Schritte zufällig ermitteln
Schritte = ZufallsZahl(Minimum, Maximum);
// Summe der Schritte berechnen
BisherigeSchritte[0] = BisherigeSchritte[0] + Schritte;
/*
Variabeln an die Funktion Bildschirmausgabe übergeben
Name der Schnecke, Summe der Schritte, Zeichen für die zurückgelegten Schritte
für das erste Element [0] -> die erste Schnecke
*/
Bildschirmausgabe(Schnecke[0], BisherigeSchritte[0], SchrittZeichen[0]);
/*
Variabeln an die Funktion Bildschirmausgabe übergeben
Name der Schnecke, Summe der Schritte, Zeichen für die zurückgelegten Schritte
für das zweite Element [1] -> die zweite Schnecke
*/
Schritte = ZufallsZahl(Minimum, Maximum);
BisherigeSchritte[1] = BisherigeSchritte[1] + Schritte;
Bildschirmausgabe(Schnecke[1], BisherigeSchritte[1], SchrittZeichen[1]);
Serial.println("-------------------------------------------");
// Runde hochzählen
Runde ++;
// Sieger Schnecke 1
if (BisherigeSchritte[0] > Ziel)
{
if (BisherigeSchritte[0] > BisherigeSchritte[1])
{
Serial.println(Schnecke[0] + " hat gewonnen!");
Neustart = true;
}
}
// Sieger Schnecke 2
if (BisherigeSchritte[1] > Ziel)
{
if (BisherigeSchritte[0] < BisherigeSchritte[1])
{
Serial.println(Schnecke[1] + " hat gewonnen!");
Neustart = true;
}
}
// unentschieden
if (BisherigeSchritte[0] > Ziel && BisherigeSchritte[1] > Ziel)
{
if (BisherigeSchritte[0] == BisherigeSchritte[1])
{
Serial.println("Unentschieden!");
Neustart = true;
}
}
}
}
}
int ZufallsZahl(int Minimum, int Maximum)
{
int Zahl = random(Minimum, Maximum);
return Zahl;
}
void Bildschirmausgabe(String Name, int Schritte, String SchrittZeichen)
{
// Name der Schnecke und Anzahl der Schritte anzeigen
Serial.println(Name + " " + String(Schritte));
// entsprechend der Anzahl der Schritte Zeichen anzeigen
for (int i = 0; i < Schritte; i ++)
{
Serial.print(SchrittZeichen);
}
// mit Leerzeichen auffüllen und Ziel anzeigen
if (Schritte <= Ziel)
{
for (int i = Schritte; i < Ziel; i ++)
{
Serial.print(" ");
}
Serial.print("| Ziel");
}
Serial.println();
}
Drei Schnecken
// Anzahl der Schritte Minimum/Maximum
int Minimum = 1;
int Maximum = 4;
// Schritte bis zum Ziel
int Ziel = 10;
int Schritte = 0;
int Runde = 1;
bool Neustart = false;
/*
Arrays für die Schnecken
BisherigeSchritte[] -> Anzahl zurückgelegter Schritte
Schnecke[] -> Namen der Schnecken
SchrittZeichen[] -> Zeichen für die zurückgelegten Schritte
*/
int BisherigeSchritte[3];
String Schnecke[3] = {"Lisa", "Karl", "Maria"};
String SchrittZeichen[3] = {"● ", "► ", "█ "};
void setup()
{
Serial.begin(9600);
// Info über das Spiel
Serial.println("Schneckenrennen");
Serial.println("Schnecken: " + Schnecke[0] + ", " + Schnecke[1] + " und " + Schnecke[2]);
Serial.println("Ziel: " + String(Ziel));
Serial.println("Tasten:\nw -> weiter\nn -> Neustart");
Serial.println("-------------------------------------------");
// Zufallsgenerator starten
randomSeed(analogRead(A0));
}
void loop()
{
// auf serielle Eingabe warten
while (Serial.available() > 0)
{
// Eingabe im Seriellen Monitor lesen
char Zeichen = Serial.read();
// Enter/Senden gedrückt
if (Zeichen == 'n')
{
Neustart = true;
}
if (Zeichen == 'w')
{
// beim Neustart -> alle Variable zurücksetzen
if (Neustart)
{
BisherigeSchritte[0] = 0;
BisherigeSchritte[1] = 0;
BisherigeSchritte[2] = 0;
Runde = 1;
Neustart = false;
}
Serial.println("Runde " + String(Runde));
// Schnecke 1
// Anzahl der Schritte zufällig ermitteln
Schritte = ZufallsZahl(Minimum, Maximum);
// Summe der Schritte berechnen
BisherigeSchritte[0] = BisherigeSchritte[0] + Schritte;
/*
Variabeln an die Methode Bildschirmausgabe übergeben
Name der Schnecke, Summe der Schritte, Zeichen für die zurückgelegten
Schritte
für das erste Element [0] -> die erste Schnecke
*/
Bildschirmausgabe(Schnecke[0], BisherigeSchritte[0], SchrittZeichen[0]);
// Schnecke3
Schritte = ZufallsZahl(Minimum, Maximum);
BisherigeSchritte[1] = BisherigeSchritte[1] + Schritte;
Bildschirmausgabe(Schnecke[1], BisherigeSchritte[1], SchrittZeichen[1]);
// Schnecke 3
Schritte = ZufallsZahl(Minimum, Maximum);
BisherigeSchritte[2] = BisherigeSchritte[2] + Schritte;
Bildschirmausgabe(Schnecke[2], BisherigeSchritte[2], SchrittZeichen[2]);
Serial.println("-------------------------------------------");
// Runde hochzählen
Runde ++;
// Sieger Schnecke 1
if (BisherigeSchritte[0] > Ziel)
{
if (BisherigeSchritte[0] > BisherigeSchritte[1] && BisherigeSchritte[0] > BisherigeSchritte[2])
{
Serial.println(Schnecke[0] + " hat gewonnen!");
Neustart = true;
}
}
// Sieger Schnecke 2
if (BisherigeSchritte[1] > Ziel)
{
if (BisherigeSchritte[1] > BisherigeSchritte[0] && BisherigeSchritte[1] > BisherigeSchritte[2])
{
Serial.println(Schnecke[1] + " hat gewonnen!");
Neustart = true;
}
}
// Sieger Schnecke 3
if (BisherigeSchritte[2] > Ziel)
{
if (BisherigeSchritte[2] > BisherigeSchritte[0] && BisherigeSchritte[2] > BisherigeSchritte[1])
{
Serial.println(Schnecke[2] + " hat gewonnen!");
Neustart = true;
}
}
// unentschieden alle Schnecken haben das Ziel überschritten
if (BisherigeSchritte[0] > Ziel && BisherigeSchritte[1] > Ziel && BisherigeSchritte[2] > Ziel)
{
// alle Schnecken haben die gleiche Anzahl Schritte
if (BisherigeSchritte[0] == BisherigeSchritte[1] == BisherigeSchritte[2])
{
Serial.println("Unentschieden!");
Neustart = true;
}
}
}
}
}
int ZufallsZahl(int Minimum, int Maximum)
{
int Zahl = random(Minimum, Maximum);
return Zahl;
}
void Bildschirmausgabe(String Name, int Schritte, String SchrittZeichen)
{
// Name der Schnecke und Anzahl der Schritte anzeigen
Serial.println(Name + " " + String(Schritte));
// entsprechend der Anzahl der Schritte Zeichen anzeigen
for (int i = 0; i < Schritte; i ++)
{
Serial.print(SchrittZeichen);
}
// mit Leerzeichen auffüllen und Ziel anzeigen
if (Schritte <= Ziel)
{
for (int i = Schritte; i < Ziel; i ++)
{
Serial.print(" ");
}
Serial.print("| Ziel");
}
Serial.println();
}
Letzte Aktualisierung: