Pong ist eines der bekanntesten Arcade-Spiele und simuliert Tischtennis. Jeder Spieler steuert ein Paddel im Spiel, indem er es vertikal über die linke oder rechte Seite des Bildschirms zieht. Spieler benutzen ihre Paddel, um auf dem Ball hin und her zu schlagen.

Turtle ist ein in Python integriertes Grafikmodul. Es verwendet eine Tafel und einen Stift, um Illustrationen darzustellen. 

Nachfolgend sind die Schritte aufgeführt:

  • Schritt 1) Erstellen Sie zwei Paddel A und B auf der linken und rechten Seite des Bildschirms.
  • Schritt 2) Erstellen Sie eine Kugel.
  • Schritt 3) Erstellen Sie ein Ereignis, um das Paddel beim Drücken einer bestimmten Taste vertikal zu bewegen.
  • Schritt 4) Erstellen Sie die Funktion zum Aktualisieren der Punktzahl, nachdem jeder Spieler eine Kollision verpasst hat.

Unten finden Sie das Programm zum Erstellen von Paddel und Ball:

import turtle 
  
sc = turtle.Screen() 
sc.title("Pong game") 
sc.bgcolor("white") 
sc.setup(width=1000, height=600) 
  
  
left_pad = turtle.Turtle() 
left_pad.speed(0) 
left_pad.shape("square") 
left_pad.color("black") 
left_pad.shapesize(stretch_wid=6, stretch_len=2) 
left_pad.penup() 
left_pad.goto(-400, 0) 
  
  
right_pad = turtle.Turtle() 
right_pad.speed(0) 
right_pad.shape("square") 
right_pad.color("black") 
right_pad.shapesize(stretch_wid=6, stretch_len=2) 
right_pad.penup() 
right_pad.goto(400, 0) 
  
  
hit_ball = turtle.Turtle() 
hit_ball.speed(40) 
hit_ball.shape("circle") 
hit_ball.color("blue") 
hit_ball.penup() 
hit_ball.goto(0, 0) 
hit_ball.dx = 5
hit_ball.dy = -5

Ausgabe:

Unten finden Sie das vollständige Python-Programm zum Erstellen eines Pong-Spiels mithilfe der Turtle Library.

import turtle 
  
  
sc = turtle.Screen() 
sc.title("Pong game") 
sc.bgcolor("white") 
sc.setup(width=1000, height=600) 
  
  
left_pad = turtle.Turtle() 
left_pad.speed(0) 
left_pad.shape("square") 
left_pad.color("black") 
left_pad.shapesize(stretch_wid=6, stretch_len=2) 
left_pad.penup() 
left_pad.goto(-400, 0) 
  
  
right_pad = turtle.Turtle() 
right_pad.speed(0) 
right_pad.shape("square") 
right_pad.color("black") 
right_pad.shapesize(stretch_wid=6, stretch_len=2) 
right_pad.penup() 
right_pad.goto(400, 0) 
  
  
hit_ball = turtle.Turtle() 
hit_ball.speed(40) 
hit_ball.shape("circle") 
hit_ball.color("blue") 
hit_ball.penup() 
hit_ball.goto(0, 0) 
hit_ball.dx = 5
hit_ball.dy = -5
  
  
left_player = 0
right_player = 0
  
  
sketch = turtle.Turtle() 
sketch.speed(0) 
sketch.color("blue") 
sketch.penup() 
sketch.hideturtle() 
sketch.goto(0, 260) 
sketch.write("Left_player : 0    Right_player: 0", 
             align="center", font=("Courier", 24, "normal")) 
  
  
def paddleaup(): 
    y = left_pad.ycor() 
    y += 20
    left_pad.sety(y) 
  
  
def paddleadown(): 
    y = left_pad.ycor() 
    y -= 20
    left_pad.sety(y) 
  
  
def paddlebup(): 
    y = right_pad.ycor() 
    y += 20
    right_pad.sety(y) 
  
  
def paddlebdown(): 
    y = right_pad.ycor() 
    y -= 20
    right_pad.sety(y) 
  
  
sc.listen() 
sc.onkeypress(paddleaup, "e") 
sc.onkeypress(paddleadown, "x") 
sc.onkeypress(paddlebup, "Up") 
sc.onkeypress(paddlebdown, "Down") 
  
  
while True: 
    sc.update() 
  
    hit_ball.setx(hit_ball.xcor()+hit_ball.dx) 
    hit_ball.sety(hit_ball.ycor()+hit_ball.dy) 
  
    
    if hit_ball.ycor() > 280: 
        hit_ball.sety(280) 
        hit_ball.dy *= -1
  
    if hit_ball.ycor() < -280: 
        hit_ball.sety(-280) 
        hit_ball.dy *= -1
  
    if hit_ball.xcor() > 500: 
        hit_ball.goto(0, 0) 
        hit_ball.dy *= -1
        left_player += 1
        sketch.clear() 
        sketch.write("Left_player : {}    Right_player: {}".format( 
                      left_player, right_player), align="center", 
                      font=("Courier", 24, "normal")) 
  
    if hit_ball.xcor() < -500: 
        hit_ball.goto(0, 0) 
        hit_ball.dy *= -1
        right_player += 1
        sketch.clear() 
        sketch.write("Left_player : {}    Right_player: {}".format( 
                                 left_player, right_player), align="center", 
                                 font=("Courier", 24, "normal")) 
  
    
    if (hit_ball.xcor() > 360 and
                        hit_ball.xcor() < 370) and
                        (hit_ball.ycor() < right_pad.ycor()+40 and
                        hit_ball.ycor() > right_pad.ycor()-40): 
        hit_ball.setx(360) 
        hit_ball.dx*=-1
         
    if (hit_ball.xcor()<-360 and 
                       hit_ball.xcor()>-370) and 
                       (hit_ball.ycor()<left_pad.ycor()+40 and 
                        hit_ball.ycor()>left_pad.ycor()-40): 
        hit_ball.setx(-360) 
        hit_ball.dx*=-1

Ausgabe: