PowerShell Spiel Zahlen raten

PowerShell Spiel Zahlen raten

 03.02.2016 -  Sebastian Pech -  ~3 Minuten

Ein kurzweiliges PowerShell Spiel lässt sich mit Hilfe der PowerShell in wenige Zeilen Code gießen. Der Spieler soll einen Schwierigkeitsgrad auswählen. Dieser bestimmt in welchem Bereich eine Zahl erraten werden muss. Das Programm gibt dem Spieler nach jeder Eingabe einen Hinweis ob die gewählte Zahl zu groß oder zu klein war. In jeder Runde erhöht sich die Anzahl der Versuche um eins.

Schwierigkeitsgrad wählen

Der Spieler erhält solange einen Auswahldialog bis er sich für einen der drei Stufen entschieden hat.

# Hilfsvariable um die Abfrage zu wiederholen
$isRunning = $true

# Solange ausführen bis der Spieler eine korrekte Wahl getroffen hat
while($isRunning)
{
    # Ausgabe der Wahlmöglichkeiten
    write-host "BITTE AUSWÄHLEN:"
    write-host "    l) Leichtes Spiel"
    write-host "    m) Mittleres Spiel"
    write-host "    s) Schwieriges Spiel"
    write-host "    q) Beenden"
    write-host -nonewline "> "

    # Einlesen der Eingabe
    $eingabe = read-host

    # Auswertung der Eingabe und ggf. Start des Spiels mit der höchstmöglichen Zahl
    switch($eingabe)
    {
        "l" { write-host "Leichtes Spiel gestartet"; Spiel(10) }
        "m" { write-host "Mittleres Spiel gestartet"; Spiel(100) }
        "s" { write-host "Schwieriges Spiel gestartet"; Spiel(1000) }
        "q" { write-host "Auf Wiedersehen"; $isRunning = $false }
        default { write-host "Ich verstehe dich nicht :-(" }
    }
}

Wählt der Spieler die Option l, m oder s aus, wird die Funktion Spiel aufgerufen. Die Funktion enthält den Spielablauf und muss vor der while Schleife definiert werden.

Funktion Spiel

Die Funktion Spiel erhält als Parameter die größte zu ratende Zahl. Basierend auf dem Maximum wird eine zufällige Zahl in dem Bereich eins bis Maximum ermittelt. Danach bekommt der Spieler solange Informationen über seine Eingabe bis er die korrekte Zahl erraten hat. Konnte dir korrekte Zahl ermittelt werden, gibt das Programm eine Nachricht aus.

function Spiel($max)
{
    # Hilfsvariable für die Wiederholung der Abfragen
    $raten = $true

    # Die zu ratende Zahl zufällig ermitteln
    $zahl = Get-Random -Minimum 1 -Maximum ($max+1)

    # Hilfsvariable für die Anzahl der Versuche
    $versuche = 0
    
    # Die Hauptschleife für das Raten
    while($raten)
    {
        # Jede Runde die Anzahl der Versuche erhöhen
        $versuche++

        # Auforderung für den Spieler ausgeben und Werte einlesen
        $eingabe = read-host "Bitte raten Sie die Zahl zwischen 1 und $max ($versuche)"
        
        # Die Eingabe des Benutzers in eine Zahl umwandeln, wenn möglich
        $out = 0
        if([int32]::TryParse($eingabe, [ref] $out)) {
            # Prüfen ob die Zahl zu hoch ist
            if($eingabe -gt $zahl) {
                "Ihre Eingabe war zu hoch."
            # Prüfen ob die Zahl zu niedrig ist
            } elseif($eingabe -lt $zahl) {
                "Ihre Eingabe war zu niedrig."
            # Die Zahl wurde erraten. Schleife abbrechen
            } else {
                $raten = $false
            }
        } else {
            # Umwandlung in eine Zahl nicht möglich - Fehler
            "Ungültige Eingabe: $eingabe"
        }
    }

    "Glückwunsch! Sie haben gewonnen in $versuche Versuchen!"
}