Exkursion: Ratespiel
So genug Basics und Theorie gelernt. Lass mal ein kleines Spiel mit unseren neugewonnenen Wissen basteln!
Ich denke hier an ein Ratespiel,
wo der Spieler eine zufällige Zahl erraten muss,
um zu gewinnen.
Python kommt automatisch mit dem "random" Package mitgeliefert.
Von dem random Package benutzten wir die randint
Funktion,
um eine zufällige Zahl zu generieren.
from random import randint
x = randint(1, 100)
Hier importiere ich randint vom random Package. Der randint gebe ich zwei Zahlen. Diese zwei Zahlen bestimmen den Bereich von dem ich zufällig eine Zahl haben möchte. Sprich hier bekomme ich zufällig eine Zahl zwischen 1 und 100.
Als nächstes möchte ich den Spieler eine Zahl eintippen lassen.
Dies geht ganz einfach mit der input
Funktion.
guess = int(input("📝 ️Errate die richtige Zahl: "))
Die input Funktion lässt den Spieler einen Text eingeben.
lDie Usereingabe wird uns dann mitgeteilt,
sobald der User die Eingabetaste (Enter) gedrückt hat.
Da der Spieler alles eingeben kann, nicht nur Zahlen,
bekommen wir die Usereingaben als ein String.
Diesen String konvertieren wir mit der int
Funktion zu einem Integer (ganze Zahl) und speichern diesen in die Variable guess
.
Jetzt können wir checken ob der Rateversuch richtig ist und je nachmdem printen wir eine Nachricht in die Konsole.
if guess == x:
print("🎉 Hurrah du hast die richtige Zahl erraten!!!")
else:
print("❌ Leider falsch versuche es nochmal")
Ein Problem. Wenn du dieses Spiel schon einmal ausgeführt hast, dann weißt du wahrscheinlich schon was das Problem ist. Wenn wir die Zahl nicht erraten konnten, wird unser Spiel sofort beendet ohne uns die Möglichkeit zu geben, nochmal die richtige Zahl zu erraten.
Lass daür eine while
Schleife nehmen,
die immer wieder den Spieler nach der richtige Zahl fragt,
solange bis sie erraten worden ist.
Außerdem lass Tipps in die Konsole printen,
um den Spieler bei einem missgeglückten Rateversuch zu sagen,
ob seine Zahl drunter oder drüber der richtige Zahl liegt.
from random import randint
x = randint(1, 100)
while True:
guess = int(input("📝 ️Errate die richtige Zahl: "))
if guess == x:
print("🎉 Hurrah du hast die richtige Zahl erraten!!!")
break
else:
print("❌ Leider falsch versuche es nochmal")
if guess > x:
print("Die zu erratende Zahl ist kleiner als", guess)
else:
print("Die zu erratende Zahl ist groesser als", guess)
Sobal wir die Zahl richtig erraten haben, also guess == x
,
"breaken" wir aus der while
Schleife und somit ist unser Spiel beendet
Natürlich bevor wir das tun, printen wir eine Gewinnnachricht in die Konsole,
sodass der Spieler auch weiß,
dass er gewonnen hat und dass das Programm nicht abgestürzt ist.
Unser Spiel läuft jetzt, aber für immer, solange der Spieler gewinnt. Das ist ziemlich langweilig oder nicht? Lass Leben definieren und bei jeden Fehlversuch ziehen wir ein Leben davon ab und sobald alle Leben weg sind, ist es Game Over.
from random import randint
x = randint(1, 100)
lives = 5
while True:
guess = int(input("📝 ️Errate die richtige Zahl: "))
if guess == x:
print("🎉 Hurrah du hast die richtige Zahl erraten!!!")
break
else:
lives -= 1
print("❌ Leider falsch versuche es nochmal")
if guess > x:
print("Die zu erratende Zahl ist kleiner als", guess)
else:
print("Die zu erratende Zahl ist groesser als", guess)
if lives == 0:
print("💀💀💀 Game Over 💀💀💀")
print("Die richtige Zahl ist: ", x)
break
Am Anfang habe ich die lives
Variable erstellt
und nach jedem Fehlversuch ziehe ich mit lives -= 1
eins von lives
ab und update den alten Wert von lives
.
Sprich lives -= 1
ist das selbe wie lives = lives - 1
.
Und am Ende darf natürlich auch kein Game Over Screen fehlen.
Cool, aber der Spieler weiß noch nicht, wie viel Leben er noch übrig hat. Lass dafür eine Lebensanzeige (Healthbar) in die Konsole ausgeben.
from random import randint
x = randint(1, 100)
lives = 5
while True:
### Printing health bar
for _ in range(0, lives):
print("💚️", end=" ")
print("")
guess = int(input("📝 ️Errate die richtige Zahl: "))
if guess == x:
print("🎉 Hurrah du hast die richtige Zahl erraten!!!")
break
else:
lives -= 1
print("❌ Leider falsch versuche es nochmal")
if guess > x:
print("Die zu erratende Zahl ist kleiner als", guess)
else:
print("Die zu erratende Zahl ist groesser als", guess)
if lives == 0:
print("💀💀💀 Game Over 💀💀💀")
print("Die richtige Zahl ist: ", x)
break
Hier printe ich alle Herzen mit am Ende einen leeren String.
In Python wird am Ende eines print Befehls immer ein Zeilenumbruch eingesetzt.
Da ich aber alle Herzen in einer Reige haben möchte,
überschreibe ich diesen Zeilenumbruch mit einem leeren String
und nach der for
Schleife,
also sobald alle Herzen gemalt worden sind,
dann printe ich eine leeren String,
aber wenn du genau hinschaust,
dann kannst du sehen,
dass ich jetzt einen Zeilenumbruch mit printe,
damit was auch immer danach an Text noch kommen sollte,
in seiner eigenen Zeile stehen kann.
Und jetzt können wir anfangen zu spielen!
💚 💚 💚 💚 💚
📝 ️Errate die richtige Zahl: 50
❌ Leider falsch versuche es nochmal
Die zu erratende Zahl ist kleiner als 50
💚 💚 💚 💚
📝 ️Errate die richtige Zahl: 25
❌ Leider falsch versuche es nochmal
Die zu erratende Zahl ist kleiner als 25
💚 💚 💚
📝 ️Errate die richtige Zahl: 15
❌ Leider falsch versuche es nochmal
Die zu erratende Zahl ist kleiner als 15
💚 💚
📝 ️Errate die richtige Zahl: 10
🎉 Hurrah du hast die richtige Zahl erraten!!!
Cool oder nicht? Vielleicht hast ja noch andere text-basierte Spielideen. Probiere es ruhig aus. Studieren geht über probieren. Dieses Buch geht zwar über Digital Humanities, aber vielleicht wirst du der nächste Spieleentwickler 😉