Willkommen und willkommen in der Lektion zum Erstellen eines Ping-Pong-Spiels mit der Turtle Python-Bibliothek! In diesem Artikel werden wir uns mit jedem Schritt der Erstellung dieses spannenden Spiels befassen, angefangen bei der Einstellung des Fensters und der Anzeige der Schläger bis hin zur Kontrolle der Ballbewegung und der Bestimmung des Siegers.
Die Turtle-Bibliothek ist Teil der Python-Standardbibliothek und bietet eine praktische API zum Erstellen von Grafikanwendungen. Wir werden seine Funktionen verwenden, um ein Spielfenster zu erstellen, Objekte auf dem Bildschirm anzuzeigen und deren Bewegung zu steuern.
Das Ping-Pong-Spiel hat zwei Schläger, die sich horizontal bewegen, und einen Ball, der sich über den Bildschirm bewegt. Das Ziel des Spiels ist es, den Ball mit dem Schläger abzuwehren, damit er nicht ins Ausland des gegnerischen Bildschirms gelangt. Jedes Mal, wenn ein Schläger reflektiert wird, erhöht sich die Geschwindigkeit des Balls, wodurch das Spiel schwieriger und spannender wird.
Wir beginnen damit, ein Spielfenster zu erstellen, seine Größe festzulegen und die Hintergrundfarbe festzulegen. Dann fügen wir zwei Schläger hinzu - einen für jeden Spieler - und passen ihre Ausgangsposition an. Danach werden wir einen Ball erstellen und seine Koordinaten und Geschwindigkeit festlegen.
Grundlagen des Ping-Pong-Spiels
Das Ping-Pong-Spiel hat einige grundlegende Elemente:
- Der Tisch - spielplatz für das Spiel, auf dem sich der Ball bewegt. Es ist in zwei Hälften unterteilt, getrennt für jeden Spieler.
- Tennisschlaegers - werkzeuge, mit denen die Spieler den Ball abwehren. Sie befinden sich auf verschiedenen Seiten des Tisches und bewegen sich nur entlang der vertikalen Achse.
- Ball - ein Objekt, das sich über den Tisch bewegt und mit einem Schläger zurückschlägt. Sein Ziel ist es, das Geschlecht des Gegners zu erreichen.
- Brille - Spielstände, die verdient werden, wenn der Ball den Boden des Gegners erreicht.
Die grundlegende Mechanik des Ping-Pong-Spiels besteht darin, den Ball mit dem Schläger abzuschlagen, um zu vermeiden, dass er den Boden der eigenen Hälfte des Tisches erreicht. Wenn der Ball den Boden eines Gegners erreicht, verliert der Spieler, dessen Boden durchbrochen wurde, einen Punkt und das Spiel wird fortgesetzt. Ein Spieler, der eine voreingestellte Anzahl von Punkten erzielt hat, gilt als Gewinner des Spiels.
Spielfeld und Ballbewegung
Wenn wir ein Ping-Pong-Spiel mit der Turtle-Python-Bibliothek erstellen, müssen wir das Spielfeld definieren und die Bewegung des Balls anpassen.
Das Spielfeld ist ein rechteckiger Bereich, auf dem alle Aktionen des Spiels stattfinden. Wir können die Feldgrößen festlegen, die Hintergrundfarbe auswählen und sie auch auf dem Bildschirm anzeigen.
Um ein Spielfeld zu erstellen, verwenden wir die Turtle-Klasse und ihre Methoden. Zu Beginn des Programms erstellen wir eine Instanz der Klasse:
Dann legen Sie die Größe des Feldes und seine Farbe fest:
turtle.setup(width=800, height=600)
turtle.bgcolor("black")
Hier legen wir die Breite des Feldes auf 800 Pixel und die Höhe auf 600 Pixel fest. Die Hintergrundfarbe wird als schwarz festgelegt. Sie können diese Werte nach Ihren Wünschen ändern.
Jetzt gehen wir zur Bewegung des Balls über. Wir werden ein Turtle-Klassenobjekt verwenden, um den Ball und seine Bewegung auf dem Feld anzuzeigen.
Erstellen Sie zunächst eine Instanz der Klasse:
Dann legen wir die Form des Balls als Kreis mit einem bestimmten Radius fest:
ball.shape("circle")
ball.color("white")
ball.penup()
Hier verwenden wir die shape() -Methode, um die Form des Balls als Kreis festzulegen. Wir legen die Farbe des Balls als Weiß fest. Mit der penup() -Methode können Sie ein Objekt verschieben, ohne Spuren auf dem Feld zu hinterlassen.
Um die Startposition des Balls auf dem Feld festzulegen, verwenden wir die setposition() -Methode und übergeben die x- und y-Koordinaten:
Um den Ball zu bewegen, verwenden wir die Methoden setx() und sety(), um die Position des Balls entsprechend den x- und y-Koordinaten zu ändern. Um den Ball zum Beispiel nach oben zu schieben, können wir den folgenden Code verwenden:
Hier erhalten wir mit der ycor() -Methode die aktuelle Position des Balls entlang der y-Achse und fügen dann 10 Pixel zu dieser Position hinzu, um den Ball nach oben zu verschieben.
So haben wir das Spielfeld definiert und die Bewegung des Balls mit der Turtle-Bibliothek auf der Python angepasst.
Den Ball von den Schlägern abprallen lassen
Jetzt, da wir den Schläger und den Ball haben, lernen wir, ihre Interaktion interessanter zu machen, indem wir den Ball von den Schlägern abprallen lassen.
Um dies zu tun, müssen wir die Bedingungen bestimmen, unter denen der Ball die Richtung ändern muss. Wenn der Ball mit dem Schläger kollidiert, muss er seine Richtung ändern, um sich in die entgegengesetzte Richtung zu bewegen.
Wir können dies erreichen, indem wir prüfen, ob der Ball die Position des Schlägers kreuzt und dann die Richtung des Balls ändern, indem wir seine Geschwindigkeit mit -1 entlang der entsprechenden Achse multiplizieren. Wenn sich beispielsweise ein Ball nach unten bewegt, muss seine Geschwindigkeit entlang der Y-Achse mit -1 multipliziert werden, um die Richtung nach oben zu ändern.
Es ist auch möglich, dass der Ball von den Grenzen des Bildschirms abprallt. Dazu müssen wir überprüfen, ob der Ball die oberen oder unteren Grenzen des Bildschirms erreicht und seine Richtung entlang der entsprechenden Achse ändern. Auf diese Weise wird der Ball vom Bildschirm abprallen.
Nachdem wir die Bedingungen für den Abprall des Balls von den Schlägern und dem Bildschirm festgelegt haben, können wir mit der Implementierung im Code des Spiels beginnen. Im nächsten Abschnitt zeigen wir Ihnen, wie Sie dies tun können, damit Ihr Ping-Pong-Spiel noch interessanter wird!
Punktewertung und Spielende
Im Ping-Pong-Spiel werden die Punkte der Spieler auf dem Bildschirm angezeigt. Jedes Mal, wenn der Ball die Wand der gegnerischen Seite erreicht, wird der Punktezähler für den aktuellen Spieler um eins erhöht. Dazu haben wir die Variablen score_a und score_b, die die Anzahl der Punkte für Spieler A bzw. Spieler B speichern.
Um die Zählerwerte zu ändern, müssen Sie Code in die Funktion ball_collision() schreiben. In dieser Funktion prüfen wir, ob der Ball die Wand der gegnerischen Seite des Feldes erreicht hat. Wenn dies der Fall ist, ändert sich das Kordinat des Balls auf der X-Achse in ein umgekehrtes Vorzeichen (die Bewegungsrichtung ändert sich auf der X-Achse) und der Punktezähler wird für den Spieler, der das Tor erzielt hat, um eins erhöht.
Außerdem fügen wir eine Bedingung hinzu, wenn einer der Spieler 5 Punkte erzielt, ist das Spiel vorbei. Um die Gewinnnachricht auf dem Bildschirm anzuzeigen, verwenden wir die Turtle-Funktion.write(). Unter der Endbedingung des Spiels fügen wir einen Aufruf der Turtle-Funktion hinzu.done(), um die Ereignisverarbeitung zu stoppen und das Fenster nach dem Ende des Spiels zu schließen.
Hinzufügen von Audio
In diesem Artikel erfahren Sie, wie Sie unserem Ping-Pong-Spiel, das mit der Turtle-Bibliothek in Python erstellt wurde, einen Soundtrack hinzufügen.
Zuerst benötigen wir eine Audiodatei, die im Spiel verwendet werden soll. Wir können einen geeigneten Soundeffekt in öffentlichen Quellen finden oder mit speziellen Programmen erstellen.
Als nächstes müssen wir das Winsound-Modul importieren, mit dem wir Audiodateien abspielen können:
import winsound
In den Funktionen, die für die Bewegung des Schlägers und des Balls verantwortlich sind, können wir Aufrufe an die Winsound-Funktion hinzufügen.PlaySound(), um den Sound bei entsprechenden Ereignissen abzuspielen. Wenn wir beispielsweise einen Ball und einen Schläger berühren, können wir den Klang einer Kollision reproduzieren:
winsound.PlaySound('collision_sound.wav', winsound.SND_ASYNC)
In diesem Beispiel übergeben wir den Namen der Audiodatei ("collision_sound.wav") und das SND_ASYNC-Flag, das angibt, dass Audio asynchron abgespielt wird, ohne die Programmausführung zu blockieren.
Wir können auch einen Ton hinzufügen, wenn der Ball von den Spielfeldrändern abprallt oder wenn er den Ball mit einem Schläger überspringt:
winsound.PlaySound('bounce_sound.wav', winsound.SND_ASYNC)
Wenn ein Spieler am Ende des Spiels die gewünschte Punktzahl erzielt, können wir den Klangeffekt des Endspiels reproduzieren:
winsound.PlaySound('game_over_sound.wav', winsound.SND_ASYNC)
Jetzt, da wir wissen, wie wir unserem Ping-Pong-Spiel Sound hinzufügen können, können wir es verbessern und es für die Spieler noch spannender machen!