Inhaltsverzeichnis
Solorennen
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 | // 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
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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | // 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
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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | // 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: