Rock, Paper, Scissors in Python

Ich habe in einem der letzten Beiträge bereits gezeigt, wie man in wenigen Schritten Python auf einem Windows PC installieren und den Code-Editor Visual Studio Code so einstellen kann, dass einem dieser während der Python-Entwicklung unterstützt. Wir haben neben dem ersten kleine Hello World Skript auch schon das Higher/Lower Game in Python geschrieben. In diesem Beitrag möchte ich euch nun zeigen, wir ihr das klassische Rock, Paper, Scissors Game in Python umsetzen könnt. Dabei hat der Nutzer die Möglichkeit seine Spielfigur (Schere, Stein oder Papier) zu wählen und auch der Computer wählt eine zufällige Figur und im Anschluss wird ermittelt, wer die Runde gewonnen hat.

Als Ausgangslage habe ich VS Code bereits geöffnet und eine Datei rockpaperscissors.py angelegt, welche wir nun mit Inhalt füllen wollen. Zunächst importieren wir das Modul random, da der Computer später per Zufall seine Spielfigur auswählen soll.

import random

Beim Starten des Skripts wollen wir einen kleinen Header anzeigen. Dafür nutzen wir die print-Funktion, welche ich bereits im letzten Beitrag gezeigt habe.

# start screen
print('---------------------------')
print('- ROCK | PAPER | SCISSORS -')
print('---------------------------')

Im nächsten Schritt wollen wir zwei Variablen definieren. Zum einen possibleChoices, welche alle zur Verfügung stehenden Spielfiguren umfasst und eine Variable isGameRunning, welche angibt, ob das Spiel aktuell noch läuft.

# game variables
possibleChoices = ('Rock', 'Paper', 'Scissors')
isGameRunning = True

Nun starten wir quasi unsere Game-Loop, welche solange läuft bis isGameRunning auf False gesetzt wird.

# game loop
while isGameRunning:

Wir wollen uns nun um die Auswahl des Spielers kümmern. Dazu fragen wir mit der Hilfe von Input nach einer Eingabe im Bereich 1, 2 und 3. Wir validieren auch gleich die Eingabe, dass diese nur diesem Wertebereich entspricht. Sobald einer der Werte gewählt wurde speichern wir in der Variablen player die ausgewählte Spielfigur.

# selection of player
playerSelection = 0

while not playerSelection:
    try:
        playerSelection = int(input('\n[1] Rock | [2] Paper | [3] Scissors\n'))
        if playerSelection not in (1,2,3):
            raise ValueError
    except ValueError:
        playerSelection = 0
	    
player = possibleChoices[playerSelection-1]

Den Computer lassen wir per Zufall eine Figur wählen.

# selection of computer
computer = possibleChoices[random.randint(0, 2)]

Nun müssen wir noch entscheiden, welcher Spieler gewonnen hat. Dafür schauen wir zuerst ob der Spieler und der Computer jeweils die gleiche Spielfigur gewählt haben. Wir nutzen hier einen f-String, um die gewählte Spielfigur des Computers auszugeben.

if player == computer:
    print(f'Draw! Computer selected {computer}\n')

Anschließend überprüfen wir nun die einzelnen Kombinationen und entscheiden, welcher Spieler gewonnen hat.

else:
    if player == possibleChoices[0]:
        if computer == possibleChoices[1]:
            print(f'You lost the game! Computer selected {computer}\n')
        else: 
            print(f'You won the game! Computer selected {computer}\n')
    elif player == possibleChoices[1]:
        if computer == possibleChoices[2]:
            print(f'You lost the game! Computer selected {computer}\n')
        else: 
            print(f'You won the game! Computer selected {computer}\n')
    elif player == possibleChoices[2]:
        if computer == possibleChoices[0]:
            print(f'You lost the game! Computer selected {computer}\n')
        else: 
            print(f'You won the game! Computer selected {computer}\n')        

Nun wollen wir den Spieler noch fragen, ob er weitere Runde spielen möchte. Auch hier validieren wir wieder, ob die Eingabe des Nutzers entweder ‚y‘ oder ’n‘ entspricht und bei die isGameRunning-Variable manipuliert.

# restart game if needed
restartGame = ''
while restartGame not in ('y', 'n'):
    restartGame = input('Do you want to restart the game?\n[y] yes | [n] no\n')

    if (restartGame != 'y'):
        isGameRunning = False

Damit haben wir jetzt ein weiteres Python-Spiel bereits fertig programmiert und können es ausprobieren. Dazu öffnen wir über strg + Ö das Terminal und geben python ./rockpaperscissors.py ein und schon beginnt das Spiel.

Wir haben nun ein zweites eigenes Spiel in Python programmiert. Das vollständige Skript lässt sich über den folgenden Download-Button herunterladen:

WordPress-Seite als Xamarin.Forms App – Teil 2 WordGuess – Wordle-Klon als Konsolen-App XFWeather – Kleine Xamarin.Forms-App