Kollisionskontrolle Ball und Schläger
Jetzt kommt die Spiellogik, wenn der Ball den Schläger trifft. Hierzu haben wir ähnlich wie bei dem Ereignis, wenn der Ball die Mauersteine, trifft mehrere Fälle.
Der Ball trifft:
- gerade auf dem Schläger auf
- der Ball trifft das Eck des Schlägers
Wenn der Ball auf die gerade Fläche des Schlägers auftrifft, wird dieser im entsprechenden Winkel abgeschmettert.
Wenn der Ball auf die Kante trifft, fliegt er auf der gleichen Linie zurück.
Machen wir den ersten Fall:
Ball trifft gerade auf Schläger
Unser Schläger bewegt sich horizontal auf der Höhe von spielfigur_1_y = 28
. Daher müssen wir nur kontrollieren, wenn der Ball sich abwärts bewegt und sich auf der Ebene 27 befindet:
# Ball trifft Schläger
# Kontrolle auf möglich Kollision
if ball_y == 27 and ball_y_richtung == 1:
print("Kontrolle auf Kollsion mit Schläger")
Wir haben von unserem Schläger die Position spielfigur_1_x
und wissen, dass der Schläger 3 Felder breit ist. Daher können wir die folgenden Berechnungen machen:
# Ball trifft Schläger
# Kontrolle auf möglich Kollision
if ball_y == 27 and ball_y_richtung == 1:
print("Kontrolle auf Kollision mit Schläger")
# Ball kommt von links:
if ball_x_richtung == 1:
print("Ball kommt von links")
if ball_x+1 >= spielfigur_1_x and ball_x+1 <= spielfigur_1_x+3:
print("Ball trifft Schläger")
ball_y_richtung = -1
# Ball kommt von rechts:
if ball_x_richtung == -1:
print("Ball kommt von rechts")
if ball_x-1 >= spielfigur_1_x and ball_x-1 <= spielfigur_1_x+3:
print("Ball trifft Schläger")
ball_y_richtung = -1
Wer nun Spaß hat, kann das Auftreffen auf der Kante noch berücksichtigen, was die Flugrichtung des Balls beeinflussen sollte. Er sollte dann in der gleichen Richtung zurückfliegen.
Wenn das Spiel zu schwierig ist, würde das Vergrößern des Schlägers helfen.