Seite anzeigenÄltere VersionenLinks hierherCopy this pageFold/unfold allNach oben Diese Seite ist nicht editierbar. Du kannst den Quelltext sehen, jedoch nicht verändern. Kontaktiere den Administrator, wenn du glaubst, dass hier ein Fehler vorliegt. ====== 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. [[https://if2.ksr.ch/mastermind/|Mastermind Online]] ===== - Die Spielregeln ===== {{youtube>_wCMg8Stg5c?}} 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: 1. **Vereinfachung:** Eine Zahl kann höchstens *einmal* vorkommen. 2. **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. ===== - Der Auftrag ===== <box 100%> **Aufgabe I:** Programmiere eine leicht vereinfachte Version von Mastermind, bei der **jede Ziffer im Code höchstens einmal vorkommt**. Dein Programm muss: - 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. </box> <box 100%> **Aufgabe II:** Starte mit einer Kopie von I und passe sie so an, dass eine Zahl *mehrfach* vorkommen kann (das ist das echte Mastermind). //Tipp:// Überlege dir zuerst auf Papier, wie du beim Beispiel ``3 3 3 3`` gegen ``3 3 1 2`` verhinderst, dass du eine Ziffer doppelt zählst. </box> ef_informatik/mastermind.txt Zuletzt geändert: 2026-09-01 11:36von sca