Gegner abschießen mit Honigtropfen
Jetzt wollen wir von unserer Spielerfigur aus ein Geschoss abschießen können. Dazu müssen wir immer von rechts und der Mitte unserer Spielfigur von der aktuellen Position der Spielfigur „absenden“.
Zum Schießen nutzen wir die Leertaste (und einen Honigtropfen):
Das Bild kann über folgende URL heruntergeladen werden:
https://www.python-lernen.de/bilder/honigtropfen.png
Auch dieses Bild binden wir wie gehabt ein:
Da man nicht mit Lebensmittel spielt, nennen wir es „kugel“.
# Kugel
kugel = pygame.image.load("bilder/honigtropfen.png")
Und wir setzen gleich alle benötigten Variablen für unser Geschoss:
# Kugel
kugel = pygame.image.load("bilder/honigtropfen.png")
kugelX = 0
kugelY = 0
kugelXbewegung = 12
Und jetzt wir unsere Kugel nur in Aktion kommen, wenn der Spieler diese abfeuert. Also brauchen wir den aktuellen Status der Kugel, der für den Anfang „False“ ist:
kugelstatus = False
Diesen Status ändern wir, sobald der Spieler die Leertaste drückt. Zusätzlich geben wir der Kugel die X und Y-Position mit, die abhängig ist von der Spielerfigur. Wir brauchen zur Y-Position noch eine Addition von 50, damit die Kugel ungefähr beim Kopf der Biene startet.
# Taste für Spieler 1
if event.key == K_UP:
# print("Spieler hat Pfeiltaste hoch gedrückt")
spielerbewegung = -6
elif event.key == K_DOWN:
# print("Spieler hat Pfeiltaste runter gedrückt")
spielerbewegung = 6
elif event.key == K_ESCAPE:
spielaktiv = False
elif event.key == K_SPACE:
# print("Kugel abfeuern")
kugelstatus = True
kugelX = 200
kugelY = spielerposY+50
Und nun kommen wir zum Teil, dass die Kugel gezeichnet wird und sich bewegt. Für das zeichnen erstellen wir eine Funktion ähnlich wir für unseren Gegner:
def kugelfliegt(x, y):
fenster.blit(kugelBild, (x, y))
Und diese Funktion wird in der Hauptschleife aufgerufen im Bereich „# Spielfeld/figuren zeichnen“.
Der Aufruf erfolgt nur, wenn der Status der Kugel auf „True“ gesetzt ist:
# Spielfeld/figuren zeichnen
animbereich += 1
if animbereich > 5:
animbereich = 0
fenster.blit(spieler, (100, spielerposY), bereich[animbereich])
if kugelstatus == True:
kugelfliegt(kugelX,kugelY)
Nun wird unsere Kugel angezeigt, wenn die Leertaste gedrückt wird:
Sobald also der Status der Kugel „True“ ist, darf diese auch losfliegen. Dazu erweitern wir unseren Bereich „# Spiellogik“
if kugelstatus == True:
kugelX += kugelXbewegung
Allerdings gilt auch bei der Kugel: wenn diese trifft (soweit sind wir noch nicht) oder das Spielfenster verlässt, dann müssen wir reagieren. Also erst einmal, wenn die Kugel das Fenster verlässt (was wir nur überprüfen müssen, wenn die Kugel aktiv ist):
if kugelstatus == True:
kugelX += kugelXbewegung
if kugelX > W:
kugelstatus = False
Jetzt kommt noch die Besonderheit – es darf keine neue Kugel abgeschossen werden, solange eine noch im Spiel sich befindet! Sonst wäre es ja zu einfach. Wir erweitern unsere Abfrage von der Leertaste.
elif event.key == K_SPACE:
# print("Kugel abfeuern")
# nur möglich, wenn keine Kugel sichtbar ist
if kugelstatus == False:
kugelstatus = True
kugelX = 200
kugelY = spielerposY+50