Skip to content
← Back to Community
Pong in python
Profile icon
codewithmenow

import turtle
import os

wn = turtle.Screen()
wn.title("Pong")
wn.bgcolor("black")
wn.setup(width=800, height=600)
wn.tracer(0)

Score

score_a = 0
score_b = 0

Paddle A

paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("white")
paddle_a.shapesize(stretch_wid=5,stretch_len=1)
paddle_a.penup()
paddle_a.goto(-350, 0)

Paddle B

paddle_b = turtle.Turtle()
paddle_b.speed(0)
paddle_b.shape("square")
paddle_b.color("white")
paddle_b.shapesize(stretch_wid=5,stretch_len=1)
paddle_b.penup()
paddle_b.goto(350, 0)

Ball

ball = turtle.Turtle()
ball.speed(0)
ball.shape("square")
ball.color("white")
ball.penup()
ball.goto(0, 0)
ball.dx = 0.2
ball.dy = 0.2

Pen

pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 260)
pen.write("Player A: 0 Player B: 0", align="center", font=("Courier", 24, "normal"))

Functions

def paddle_a_up():
y = paddle_a.ycor()
y += 20
paddle_a.sety(y)

def paddle_a_down():
y = paddle_a.ycor()
y -= 20
paddle_a.sety(y)

def paddle_b_up():
y = paddle_b.ycor()
y += 20
paddle_b.sety(y)

def paddle_b_down():
y = paddle_b.ycor()
y -= 20
paddle_b.sety(y)

Keyboard bindings

wn.listen()
wn.onkeypress(paddle_a_up, "w")
wn.onkeypress(paddle_a_down, "s")
wn.onkeypress(paddle_b_up, "Up")
wn.onkeypress(paddle_b_down, "Down")

Main game loop

while True:
wn.update()

# Move the ball ball.setx(ball.xcor() + ball.dx) ball.sety(ball.ycor() + ball.dy) # Border checking # Top and bottom if ball.ycor() > 290: ball.sety(290) ball.dy *= -1 os.system("afplay bounce.wav&") elif ball.ycor() < -290: ball.sety(-290) ball.dy *= -1 os.system("afplay bounce.wav&") # Left and right if ball.xcor() > 350: score_a += 1 pen.clear() pen.write("Player A: {} Player B: {}".format(score_a, score_b), align="center", font=("Courier", 24, "normal")) ball.goto(0, 0) ball.dx *= -1 elif ball.xcor() < -350: score_b += 1 pen.clear() pen.write("Player A: {} Player B: {}".format(score_a, score_b), align="center", font=("Courier", 24, "normal")) ball.goto(0, 0) ball.dx *= -1 # Paddle and ball collisions if ball.xcor() < -340 and ball.ycor() < paddle_a.ycor() + 50 and ball.ycor() > paddle_a.ycor() - 50: ball.dx *= -1 os.system("afplay bounce.wav&") elif ball.xcor() > 340 and ball.ycor() < paddle_b.ycor() + 50 and ball.ycor() > paddle_b.ycor() - 50: ball.dx *= -1 os.system("afplay bounce.wav&")
Voters
Profile icon
DonavanPerez
Profile icon
userSM
Profile icon
codewithmenow
Comments
hotnewtop
Profile icon
userSM

I'm bad a pong but like this game :)

Profile icon
[deleted]

Good work. I wonder if you could make a mobile friendly version? The user could move their paddle by dragging and their opponent could be the computer that basically always hits the ball back. The speed the ball moves at could increase until the user cannot hit it anymore. There could be a timer that stops when this happens so you could compare your time against your best time. Perhaps I should have a go at making such a game.

Profile icon
codewithmenow

@malvoliothegood that sounds like a good idea maybe we could team and make it together

Profile icon
codewithmenow

@malvoliothegood by the way I am 9ys old.

Profile icon
codewithmenow

@malvoliothegood It is ok if you do not want to team