Create pong game using Python Turtle (original) (raw)

Last Updated : 04 Sep, 2024

Pong is one of the most famous arcade games, simulating table tennis. Each player controls a paddle in the game by dragging it vertically across the screen’s left or right side. Players use their paddles to strike back and forth on the ball. Turtle is an inbuilt graphic module in Python. It uses a panel and pen to depict illustrations.

**Below are the steps used:

**Below is the program to create Paddle and Ball:

Python `

Import required library

import turtle

Create screen

sc = turtle.Screen() sc.title("Pong game") sc.bgcolor("white") sc.setup(width=1000, height=600)

Left paddle

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 paddle

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)

Ball of circle shape

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

`

**Output:

**Below is the complete python program to create pong game using turtle library.

Python `

import turtle import time

Create screen

sc = turtle.Screen() sc.title("Pong game") sc.bgcolor("white") sc.setup(width=1000, height=600)

Left paddle

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 paddle

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)

Ball of circle shape

hit_ball = turtle.Turtle() hit_ball.speed(4) # Adjusted speed hit_ball.shape("circle") hit_ball.color("blue") hit_ball.penup() hit_ball.goto(0, 0) hit_ball.dx = 5 hit_ball.dy = -5

Initialize the score

left_player = 0 right_player = 0

Displays the score

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"))

Functions to move paddles

def paddleaup(): y = left_pad.ycor() if y < 250: # Limit paddle movement y += 20 left_pad.sety(y)

def paddleadown(): y = left_pad.ycor() if y > -240: # Limit paddle movement y -= 20 left_pad.sety(y)

def paddlebup(): y = right_pad.ycor() if y < 250: # Limit paddle movement y += 20 right_pad.sety(y)

def paddlebdown(): y = right_pad.ycor() if y > -240: # Limit paddle movement y -= 20 right_pad.sety(y)

Keyboard bindings

sc.listen() sc.onkeypress(paddleaup, "w") # Changed to 'w' sc.onkeypress(paddleadown, "s") # Changed to 's' sc.onkeypress(paddlebup, "Up") sc.onkeypress(paddlebdown, "Down")

Main game loop

while True: sc.update() time.sleep(0.01) # Add delay to make game smoother

hit_ball.setx(hit_ball.xcor() + hit_ball.dx)
hit_ball.sety(hit_ball.ycor() + hit_ball.dy)

# Checking borders
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"))

# Paddle ball collision
if (hit_ball.xcor() > 360 and hit_ball.xcor() < 370) and \
        (hit_ball.ycor() < right_pad.ycor() + 50 and hit_ball.ycor() > right_pad.ycor() - 50):
    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() + 50 and hit_ball.ycor() > left_pad.ycor() - 50):
    hit_ball.setx(-360)
    hit_ball.dx *= -1

`

**Output:

https://media.geeksforgeeks.org/wp-content/uploads/20200905203316/2020-09-05-20-31-05.mp4

Similar Reads

Projects for Beginners
























Projects for Intermediate


















Web Scraping












Automating boring Stuff Using Python

















Tkinter Projects



































Turtle Projects












OpenCV Projects

































Python Django Projects














Python Text to Speech and Vice-Versa