import random
import time
# Spielfeld initialisieren
def erstelle_spielfeld():
karten = [1, 1, 2, 2, 3, 3, 4, 4] # Paare von Karten
random.shuffle(karten) # Karten mischen
return karten
# Spielfeld anzeigen
def zeige_spielfeld(karten, aufgedeckt):
for i in range(len(karten)):
if i in aufgedeckt:
print(f"[{karten[i]}]", end=" ")
else:
print("[X]", end=" ")
print() # Neue Zeile
# Hauptspiel
def memory_spiel():
karten = erstelle_spielfeld()
aufgedeckt = set() # Speichert die Indizes der aufgedeckten Karten
versuche = 0
while len(aufgedeckt) < len(karten): # Solange nicht alle Karten aufgedeckt sind
zeige_spielfeld(karten, aufgedeckt)
print(f"Versuche: {versuche}")
# Spieler wählt zwei Karten
while True:
try:
wahl1 = int(input("Erste Karte (0-7): "))
wahl2 = int(input("Zweite Karte (0-7): "))
if 0 <= wahl1 < len(karten) and 0 <= wahl2 < len(karten) and wahl1 != wahl2:
if wahl1 not in aufgedeckt and wahl2 not in aufgedeckt:
break
else:
print("Wähle nur verdeckte Karten!")
else:
print("Ungültige Eingabe! Wähle zwei verschiedene Zahlen zwischen 0 und 7.")
except ValueError:
print("Bitte gib eine Zahl ein!")
# Karten kurz aufdecken
temp_aufgedeckt = aufgedeckt.copy()
temp_aufgedeckt.add(wahl1)
temp_aufgedeckt.add(wahl2)
zeige_spielfeld(karten, temp_aufgedeckt)
time.sleep(1) # Kurze Pause, damit der Spieler die Karten sieht
# Prüfen, ob sie übereinstimmen
if karten[wahl1] == karten[wahl2]:
print("Treffer!")
aufgedeckt.add(wahl1)
aufgedeckt.add(wahl2)
else:
print("Kein Treffer.")
versuche += 1
print(f"Spiel beendet! Versuche: {versuche}")
# Spiel starten
if __name__ == "__main__":
print("Willkommen beim Memory-Spiel!")
memory_spiel()