|
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 169 170 |
#include "LCDIC2.h" #include "Bounce2.h" // 4‑zeiliges LCD LCDIC2 lcd(0x27, 20, 4); // "Prallverhinderer" für den Taster starten Bounce TasteStart = Bounce(); int TASTER = 7; // Anzahl der Schritte Minimum/Maximum int Minimum = 1; int Maximum = 4; // Schritte bis zum Ziel int Ziel = 16; 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] = {"\176", "\176"}; void setup() { // LCD starten lcd.begin(); // Cursor “verstecken” lcd.setCursor(false); pinMode(TASTER, INPUT_PULLUP); // Instanzen des Objekts Bounce für den Taster zuordnen // Zeitintervall einstellen TasteStart.attach(TASTER); TasteStart.interval(20); // Info über das Spiel lcd.setCursor(0, 0); lcd.print("Schneckenrennen"); lcd.setCursor(0, 1); lcd.print(Schnecke[0] + " und " + Schnecke[1]); lcd.setCursor(0, 2); lcd.print("Ziel: " + String(Ziel)); lcd.setCursor(0, 3); lcd.print("-> Taster dr\365cken"); } void loop() { if (TasteStart.update()) { if (TasteStart.read() == LOW) { // Zufallsgenerator starten randomSeed(analogRead(0)); // beim Neustart -> alle Variable zurücksetzen if (Neustart) { BisherigeSchritte[0] = 0; BisherigeSchritte[1] = 0; Runde = 1; Neustart = false; } lcd.clear(); // 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], 0); /* Variabeln an die Methode 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], 2); // Sieger Schnecke 1 if (BisherigeSchritte[0] > Ziel) { if (BisherigeSchritte[0] > BisherigeSchritte[1]) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(Schnecke[0] + " hat gewonnen!"); Neustart = true; } } // Sieger Schnecke 2 if (BisherigeSchritte[1] > Ziel) { if (BisherigeSchritte[0] < BisherigeSchritte[1]) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(Schnecke[1] + " hat gewonnen!"); Neustart = true; } } // unentschieden if (BisherigeSchritte[0] > Ziel && BisherigeSchritte[1] > Ziel) { if (BisherigeSchritte[0] == BisherigeSchritte[1]) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Unentschieden!"); Neustart = true; } } if (Neustart) { lcd.setCursor(0, 2); lcd.print("Neustart"); lcd.setCursor(0, 3); lcd.print("-> Taster dr\365cken"); } } } } int ZufallsZahl(int Minimum, int Maximum) { int Zahl = random(Minimum, Maximum); return Zahl; } void Bildschirmausgabe(String Name, int Schritte, String SchrittZeichen, int Zeile) { lcd.setCursor(0, Zeile); // Name der Schnecke und Anzahl der Schritte anzeigen lcd.print(Name + " " + String(Schritte)); lcd.setCursor(0, Zeile + 1); // entsprechend der Anzahl der Schritte Zeichen anzeigen for (int i = 0; i < Schritte; i ++) { lcd.print(SchrittZeichen); } lcd.setCursor(Ziel, Zeile + 1); lcd.print("|"); } |
Letzte Aktualisierung: