Python Tutorial
- jetzt Python programmieren lernen

Kollisionskontrolle Ball und Schläger

Jetzt kommt die Spiellogik, wenn der Ball den Schläger trifft. Hierzu haben wir ähnlich wie bei dem Punkt, 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 er 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 befindet vertikal auf der Höhe von „spielfigur_1_y = 28“. Daher müssen wir nur kontrollieren, wenn der Ball sich abwärts bewegt und auf der Ebene 27 sich 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 entsprechenden 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.