#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // LCD-Initialisierung mit den entsprechenden Pins
const int buttonAlphabetPin = 6; // Digitaler Pin für den ersten Knopf
const int buttonSelectPin = 7; // Digitaler Pin für den zweiten Knopf
const int buttonResetPin = 8; // Digitaler Pin für den dritten Knopf
const int buttencontrole = 10; // Für Kontroll Batten
const int Ledpin = 9; // Für Test LED
char selectedLetter = 'A'; // Starte mit dem Buchstaben 'A'
String randomWord = ""; // Initialisiere die zufällige Wortvariable
int tries = 0; // Zähle die Versuche
boolean gameStarted = false; // Variable, um zu verfolgen, ob das Spiel gestartet wurde
// Liste von Wörtern, die erraten werden sollen
String words[] = {"APFEL", "BANANE", "KIRSCH", "ORANGE", "ZITRONE", "ERDBEERE", "ANANAS", "KIWI", "BIRNE", "PFLAUME",
"MELONE", "TRAUBE", "KAROTTE", "KARTOFFEL", "TOMATE", "GURKE", "ZUCCHINI", "PAPRIKA", "SALAT",
"SPINAT", "BROKKOLI", "BLUMENKOHL", "LAUCH", "ZWIEBEL", "KÜRBIS", "RADIESCHEN", "RÜBE", "BOHNE",
"FUßBALL", "TENNIS", "BASKETBALL", "HOCKEY", "VOLLEYBALL", "SCHWIMMEN", "RADFAHREN", "LAUFEN",
"BOXEN", "TISCHTENNIS", "GOLF", "TURNEN", "RUDERN", "SEGELN", "KLETTERN", "EISKUNSTLAUF", "SKIFAHREN",
"SNOWBOARDEN", "SURFEN", "JOGGEN", "TRIATHLON", "BADMINTON", "RINGEN", "WANDERN", "KAYAKEN", "KICKBOXEN",
"BASEBALL", "EISHOCKEY", "ROLLERBLADEN", "BOGENSCHIEßEN", "PICKNICK", "CAMPING", "BERGSTEIGEN",
"TAUCHEN", "OBST", "GEMÜSE", "FRUCHT", "SÜßIGKEIT", "SNACK", "SPEISE", "GERICHT", "HÄNCHEN", "FISCH",
"STEAK", "BRATWURST", "SCHNITZEL", "KUCHEN", "PASTA", "REIS", "PIZZA", "BROT", "KAFFEE", "TEE",
"SAFT", "WEIN", "BIER", "LIMONADE", "MILCH", "JOGHURT", "EIS", "SOßE", "SALZ", "PFEFFER"};
void setup() {
lcd.begin(16, 2); // Initialisiere das LCD-Display
lcd.print(" GALGENRATEN!");
delay(2000);
lcd.clear();
pinMode(buttonAlphabetPin, INPUT); // Setze den ersten Knopf-Pin als Eingang
pinMode(buttonSelectPin, INPUT_PULLUP); // Setze den zweiten Knopf-Pin als Eingang und aktiviere den Pull-up-Widerstand
pinMode(buttonResetPin, INPUT_PULLUP); // Setze den dritten Knopf-Pin als Eingang und aktiviere den Pull-up-Widerstand
}
void loop() {
if (digitalRead(buttencontrole) == HIGH) {
digitalWrite(Ledpin, HIGH);
}
if (!gameStarted) { // Wenn das Spiel noch nicht gestartet wurde
if (digitalRead(buttonResetPin) == LOW) { // Wenn der Reset-Knopf gedrückt wird
startGame(); // Starte das Spiel
}
} else { // Wenn das Spiel gestartet wurde
char selectedChar = selectLetter(); // Wähle einen Buchstaben aus dem Alphabet
if (selectedChar != '\0') { // Wenn ein Buchstabe ausgewählt wurde
selectedLetter = selectedChar; // Aktualisiere den ausgewählten Buchstaben
displayLetter(selectedLetter); // Zeige den ausgewählten Buchstaben auf dem Display an
delay(200); // Debounce-Verzögerung, um mehrfache Auslösungen zu verhindern
}
if (digitalRead(buttonSelectPin) == LOW) { // Wenn der Auswahlknopf gedrückt wird
checkGuess(selectedLetter); // Überprüfe den ausgewählten Buchstaben
delay(200); // Debounce-Verzögerung, um mehrfache Auslösungen zu verhindern
}
}
}
void startGame() {
randomWord = generateRandomWord(); // Wähle ein zufälliges Wort aus der Liste aus
displayLetter(selectedLetter); // Zeige den ausgewählten Buchstaben auf dem Display an
gameStarted = true; // Setze die Spielgestartet-Flagge auf true
}
char selectLetter() {
if (digitalRead(buttonAlphabetPin) == LOW) { // Wenn der erste Knopf gedrückt wird
selectedLetter++; // Erhöhe den ausgewählten Buchstaben
if (selectedLetter > 'Z') { // Wenn der Buchstabe Z erreicht ist, setze ihn auf A zurück
selectedLetter = 'A';
}
return selectedLetter; // Gib den ausgewählten Buchstaben zurück
}
return '\0'; // Gib Null zurück, wenn kein Buchstabe ausgewählt wurde
}
void checkGuess(char guess) {
boolean found = false; // Initialisiere eine Variable, um zu verfolgen, ob der Buchstabe im Wort gefunden wurde
for (int i = 0; i < randomWord.length(); i++) { // Durchlaufe das zufällige Wort
if (randomWord[i] == guess) { // Wenn der Buchstabe im Wort gefunden wird
found = true; // Setze die found-Flagge auf true
break; // Beende die Schleife, da der Buchstabe gefunden wurde
}
}
if (found) { // Wenn der Buchstabe im Wort gefunden wurde
lcd.setCursor(0, 1); // Setze den Cursor auf die zweite Zeile, erste Spalte
lcd.print("Buchstabe gefunden!"); // Zeige eine Nachricht auf dem Display an
} else { // Wenn der Buchstabe nicht im Wort gefunden wurde
lcd.setCursor(0, 1); // Setze den Cursor auf die zweite Zeile, erste Spalte
lcd.print("Buchstabenicht gefunden!"); // Zeige eine Nachricht auf dem Display an
}
}
String generateRandomWord() {
int randomIndex = random(0, sizeof(words) / sizeof(words[0])); // Wähle einen zufälligen Index aus der Wortliste
return words[randomIndex]; // Gib das zufällige Wort zurück
}
void displayLetter(char letter) {
lcd.clear(); // Lösche den Inhalt des Displays
lcd.setCursor(0, 0); // Setze den Cursor auf die erste Zeile, erste Spalte
lcd.print("Ausgewaehlter Buchstabe:"); // Zeige eine Nachricht auf dem Display an
lcd.setCursor(0, 1); // Setze den Cursor auf die zweite Zeile, erste Spalte
lcd.print(letter); // Zeige den ausgewählten Buchstaben auf dem Display an
}