Wie erstelle ich ein Zahlenratespiel in Python?

Wahrscheinlich haben Sie bereits erraten, worum es in diesem Artikel geht. Und wahrscheinlich sind Sie mit Zahlenspielen vertraut und suchen nach einer Möglichkeit, diese mit Python zu programmieren.

Lassen Sie uns gemeinsam lernen, wie man ein Zahlenerratespiel von Grund auf neu entwickelt.

Das Zahlenerratespiel

Das Spielprinzip ist simpel: Der Nutzer muss eine zufällig generierte Zahl zwischen 1 und 100 erraten. Das ist alles.

Ist das Spiel wirklich so einfach?

Ja, das ist es.

Es gibt jedoch einen wichtigen Aspekt, den wir den Nutzern anbieten müssen, um das Erraten der Zahl zu erleichtern: Hinweise. Wir müssen dem Nutzer mitteilen, ob seine geratene Zahl kleiner oder größer ist als die Zielzahl. Dies hilft dem Nutzer, die richtige Richtung einzuschlagen.

Zusätzlich können wir das Spiel durch optionale Features spannender gestalten.

Die Erstellung des grundlegenden Spiels ist der erste Schritt. Danach können wir, wie besprochen, zusätzliche Funktionen hinzufügen. In diesem Abschnitt werden wir die Basisversion des Spiels entwickeln. Anschließend werden wir uns der Implementierung neuer Features widmen.

Ich möchte Sie ermutigen, das Spiel selbst zu programmieren, ohne den Code blind zu kopieren. Daher werde ich zunächst den Algorithmus erläutern. Das hilft Ihnen, selbst zu codieren oder den Code später besser zu verstehen.

Betrachten wir nun den Algorithmus für das Zahlenerratespiel.

Algorithmus

Vergewissern Sie sich, dass Sie den Algorithmus verstanden haben, bevor Sie mit dem Codieren beginnen.

  • Definieren Sie den Zahlenbereich. Standardmäßig ist er 1–100, aber Sie können ihn beliebig anpassen.
  • Generieren Sie eine zufällige Ganzzahl innerhalb dieses Bereichs (1–100).
  • Starten Sie das Spiel, indem Sie dem Benutzer eine Nachricht anzeigen: „Erraten Sie eine Zahl zwischen X und Y“. Sie können diese Meldung beliebig anpassen.
  • Initialisieren Sie eine Variable mit 0, um die Anzahl der Versuche des Benutzers zu zählen.
  • Starten Sie eine Endlosschleife:
    • Fordern Sie den Benutzer auf, eine Zahl zu erraten.
    • Wenn die geratene Zahl mit der Zufallszahl übereinstimmt, gratulieren Sie dem Benutzer mit einer Nachricht wie: „Super! Sie haben es in 5 Versuchen geschafft!“.
    • Beenden Sie die Schleife, nachdem Sie dem Benutzer gratuliert haben.
    • Wenn die geratene Zahl kleiner als die Zufallszahl ist, geben Sie dem Benutzer die Rückmeldung: „Ihre Zahl ist zu klein“ oder eine ähnliche Meldung.
    • Wenn die geratene Zahl größer als die Zufallszahl ist, geben Sie dem Benutzer die Rückmeldung: „Ihre Zahl ist zu groß“ oder eine ähnliche Meldung.
    • Erhöhen Sie am Ende die Anzahl der Versuche des Benutzers.

Nachdem Sie den Algorithmus gelesen haben, sollten Sie schon eine Idee vom Code haben. Keine Sorge, wenn Sie nicht den gesamten Code im Kopf haben. Vergewissern Sie sich aber, dass Sie den Algorithmus verstehen.

Es ist an der Zeit, den Code umzusetzen. Legen wir also los.

Der Code

Haben Sie versucht, den Code selbst zu schreiben?

Falls ja und Sie sind fertig: Herzlichen Glückwunsch! Sehen Sie sich den folgenden Code an, um Ihr Verständnis zu erweitern.

Keine Sorge, wenn Sie den Code nicht geschrieben haben. Betrachten Sie den folgenden Code und versuchen Sie, ihn nachzuvollziehen und zu optimieren. Schreiben Sie ihn gegebenenfalls auf Ihre eigene Art und Weise.

Betrachten wir also den Code:

import random

class NumberGuessingGame:

    def __init__(self):
        ## Definiere den Bereich
        self.LOWER = 1
        self.HIGHER = 100

    ## Methode zur Generierung der Zufallszahl
    def get_random_number(self):
        return random.randint(self.LOWER, self.HIGHER)

    ## Methode zum Starten des Spiels
    def start(self):
        ## Generiere die Zufallszahl
        random_number = self.get_random_number()

        print(f"Erraten Sie eine zufällige Zahl zwischen {self.LOWER} und {self.HIGHER}")

        ## Kern des Spiels
        chances = 0
        while True:
            user_number = int(input("Geben Sie Ihre Zahl ein: "))
            if user_number == random_number:
                print(f"-> Super! Sie haben es in {chances + 1} Versuch{'en' if chances > 1 else ''} geschafft!")
                break
            elif user_number < random_number:
                print("-> Ihre Zahl ist zu niedrig")
            else:
                print("-> Ihre Zahl ist zu hoch")
            chances += 1

## Erzeuge eine Instanz und starte das Spiel
numberGuessingGame = NumberGuessingGame()
numberGuessingGame.start()

Hier sind einige wichtige Punkte, die Sie aus dem Code verstehen sollten:

  • Der Bereich wird innerhalb der `__init__`-Methode definiert, wodurch er in allen Klassenmethoden verfügbar ist.
  • Wir können den Bereich einfach an einer Stelle ändern, und die Änderungen werden überall im Programm wirksam.
  • Die Generierung der Zufallszahl ist in eine separate Methode ausgelagert, was dem Prinzip der Trennung von Verantwortlichkeiten entspricht. Hier ist die Methode zwar kurz, kann aber in Zukunft komplexer werden.
  • Wir verwenden eine Klasse, um alle Methoden, die zum Spiel gehören, zusammenzufassen und sie in anderen Anwendungen wiederverwendbar zu machen.

Alle diese Punkte sind Teil der Prinzipien eines sauberen Codes. Wir sollten versuchen, sauberen Code zu schreiben, den wir auch noch nach Jahren verstehen können.

Die Beispielausgabe des Spiels sieht folgendermaßen aus:

$ python number_guessing_game.py
Erraten Sie eine zufällige Zahl zwischen 1 und 100
Geben Sie Ihre Zahl ein: 50
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 75
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 90
-> Ihre Zahl ist zu hoch
Geben Sie Ihre Zahl ein: 85
-> Ihre Zahl ist zu hoch
Geben Sie Ihre Zahl ein: 80
-> Super! Sie haben es in 5 Versuchen geschafft!

Ich gehe davon aus, dass Sie Python installiert haben, um den obigen Code auszuprobieren.

Zusätzliche Funktionen

Wir werden eine maximale Anzahl von Versuchen hinzufügen, die ein Benutzer hat, um die Zahl zu erraten. Wenn der Benutzer die Zahl innerhalb der gegebenen Versuche nicht errät, verliert er.

Wie wird das hinzugefügt?

Dies ist ein einfacher Prozess in zwei Schritten. Sehen wir uns die Schritte an:

  • Definieren Sie die maximale Anzahl der Versuche, die der Benutzer hat, um die Zahl zu erraten.
  • Prüfen Sie vor jeder neuen Eingabe, ob der Benutzer noch Versuche übrig hat. Wenn nicht, beenden Sie das Spiel.

Der folgende zusätzliche Code ergänzt diese Funktion:

  • Fügen Sie den folgenden Code in die `__init__`-Methode ein.
self.MAX_CHANCES = 10
  • Fügen Sie die folgende Bedingung ein, bevor Sie eine neue Zahl vom Benutzer erfragen:
if chances == self.MAX_CHANCES:
                print("-> Schade! Sie haben das Spiel verloren. Ihre Versuche sind aufgebraucht.")
                break

Probieren Sie das Spiel jetzt aus, ohne die richtige Zahl zu erraten. Sie sollten eine ähnliche Ausgabe wie diese sehen:

$ python number_guessing_game.py
Erraten Sie eine zufällige Zahl zwischen 1 und 100. Sie haben 10 Versuche zum Erraten.
Geben Sie Ihre Zahl ein: 1
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 2
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 3
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 4
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 5
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 6
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 7
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 8
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 9
-> Ihre Zahl ist zu niedrig
Geben Sie Ihre Zahl ein: 10
-> Ihre Zahl ist zu niedrig
-> Schade! Sie haben das Spiel verloren. Ihre Versuche sind aufgebraucht.

Toll! Wir haben unserem Spiel eine zusätzliche Funktion hinzugefügt. Aber das ist noch nicht alles. Sie können weitere Funktionen hinzufügen, um es für die Benutzer interessanter zu machen. Jetzt sind Sie an der Reihe. Machen Sie es noch besser!

Fazit

Wir haben ein einfaches Zahlenerratespiel entwickelt. Jetzt ist es an Ihnen, an die Spiele zu denken, die Sie als Kind gespielt haben. Entwickeln Sie sie mit Hilfe der Programmierung und teilen Sie sie mit Ihren Freunden. Wir können die meisten Spiele aus unserer Kindheit digitalisieren.

Als Nächstes können Sie sich mit Python-IDEs und Online-Compilern befassen, um Python-Code auszuführen.

Viel Spaß beim Programmieren 🙂

Wenn Sie nicht genug von viralen Wortspielen bekommen können, erfahren Sie hier, wie Sie bei Wordle besser werden können: Link zu Wordle-Artikel.

Hat Ihnen der Artikel gefallen? Teilen Sie ihn gerne mit anderen!