Pong é um dos jogos de arcade mais famosos, simulando tênis de mesa. Cada jogador controla uma raquete no jogo arrastando-a verticalmente do lado esquerdo ou direito da tela. Os jogadores usam seus remos para golpear a bola para frente e para trás.

Turtle é um módulo gráfico embutido em Python. Ele usa um painel e uma caneta para representar as ilustrações. 

Abaixo estão as etapas utilizadas:

  • Etapa 1) Crie duas pás A e B no lado esquerdo e direito da tela.
  • Etapa 2) Crie uma bola.
  • Etapa 3) Crie um evento para mover a raquete verticalmente ao pressionar uma determinada tecla.
  • Etapa 4) Crie a função para atualizar a pontuação após cada jogador perder uma colisão.

Abaixo está o programa para criar Paddle and 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

Resultado:

Abaixo está o programa completo em Python para criar um jogo de pong usando a biblioteca tartaruga.

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

Resultado: