
Ziel des Projekts
Zwei Schnecken liefern sich ein Rennen. Sie laufen eine zufällig ermittelte Anzahl von Schritten. Wer als Erstes mit dem letzten Zug das Ziel überschreitet, hat gewonnen.

Das Programm
Info
Im Kopf des Programms werden verschiedene ⇒Arrays verwendet, damit die Ausgabe möglichst flexibel gestaltet werden kann.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// 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] = {"> ", "+ "}; |
Im setup-Teil wird über die Entfernung zum Ziel, die beteiligten Schnecken und über die Tastenbelegung informiert.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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]); // \n = neue Zeile Serial.println("Ziel: " + String(Ziel)); Serial.println("Tasten:\nw -> weiter\nn -> Neustart"); Serial.println("-------------------------------------------"); // Zufallsgenerator starten randomSeed(analogRead(A0)); } |
Der loop-Teil:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
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 Variablen 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; /* Variablen 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]); /* Variablen 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; } } } } } |
Jetzt fehlen noch die Funktionen ZufallsZahl() und Bildschirmausgabe().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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(); } |

Erweitere das Programm auf ⇒drei Schnecken.
So sieht es aus:

Ähnliche Projekte
- Glücksrad mit 360°-Servomotor
- Glücksrad mit NeoPixel-Ring
- Glücksrad mit Schrittmotor
- Laplace-Versuch
- Lottozahlen – Anzeige auf einem LCD
- Lottozahlen mit einem Ethernet-Shield
- Lottozahlen mit Arduino WiFi und NTP
- Lottozahlen – Anzeige auf einem OLED-Display
- Lottozahlen auf eine SD-Karte schreiben
- Lottozahlen mit Zeitstempel anzeigen und auf einer SD-Karte speichern
Letzte Aktualisierung:

