**Dies ist eine alte Version des Dokuments!**
Projekt: Mastermind – den Geheimcode knacken
In diesem kurzen Projekt programmierst du das klassische Knobelspiel Mastermind. Du brauchst dazu nur die bekannten Werkzeuge: Variablen, Verzweigungen (if/elif/else), Schleifen (while/for), Listen und das random-Modul.
1. Die Spielregeln
Der Computer denkt sich einen geheimen Code aus 4 Ziffern aus. Jede Ziffer liegt zwischen 1 und 6. Du hast 12 Versuche, den Code zu erraten. Nach jedem Tipp verrät dir der Computer zwei Zahlen:
- rot = so viele Ziffern sind richtig und an der richtigen Stelle
- weiss = so viele Ziffern kommen zwar im Code vor, stehen aber an der falschen Stelle
Mehr sagt er nicht – welche Ziffern es sind, musst du selbst herausfinden. Genau das ist der Reiz.
Wir programmieren zwei Varianten des Spiels:
- Vereinfachung: Eine Zahl kann höchstens einmal vorkommen.
- Original: Eine Zahl kann mehrfach vorkommen. Das macht den Code deutlich anspruchsvoller.
Beispiel (Original). Der geheime Code sei 3 3 1 2 (beachte: die $3$ kommt doppelt vor).
| Dein Tipp | rot | weiss | Erklärung |
|---|---|---|---|
1 2 3 4 | 0 | 3 | 1, 2, 3 sind im Code, aber am falschen Platz; 4 gar nicht |
3 3 3 3 | 2 | 0 | zwei 3er sitzen richtig; die beiden übrigen 3er zählen nicht, weil der Code nur zwei 3er enthält |
3 3 1 2 | 4 | 0 | geknackt! |
Die mittlere Zeile ist der springende Punkt: Jede Ziffer im Code kann nur einmal getroffen werden. Das macht die Auswertung interessanter, als sie auf den ersten Blick aussieht.
2. Der Auftrag
- Den geheimen 4-stelligen Code zufällig erzeugen (Ziffern 1–6, Wiederholungen nicht erlaubt), in Liste speichern. Tipp: Leere Liste erstellen, dann so lange Zufallszahlen hinzufügen, bis vier verschiedene drin sind.
- Player auffordern, vierstellige Zahl einzugeben, z.B.
1234. - In Liste mit vier einzelnen Zahlen umwandeln.
- Rot und weiss korrekt berechnen und beide ausgeben.
- Alles ab 2. Punkt in Endlosschleife
while True. - Schleife abbrechen (
break), sobald Player richtige Zahlen erraten hat oder $12$ Versuche erreicht wurde. - Finale Ausgabe: „Gewonnen“ oder „Verloren“ sowie Anzahl Versuche.
3 3 3 3 gegen 3 3 1 2 verhinderst, dass du eine Ziffer doppelt zählst.