Python

 

Introduction

Pong is one of the most classic arcade games that has been loved by gamers since the 1970s. In this tutorial, we will guide you through the process of creating a simple Pong game using Python programming. The goal of this game is to control paddles to hit the ball back and forth between two players or between a player and the computer.

Objective

The objective of this project is to develop a simple Pong game in Python using the pygame library. This game will feature a ball bouncing between two paddles. The player will use keyboard inputs to control the movement of one paddle, while the other paddle can either be controlled by another player or automatically moved by the program (if you choose to play alone). The game ends when one player scores a point by failing to return the ball.

Python Code for Pong Game

import pygame
import random

# Initialize Pygame
pygame.init()

# Define constants
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PADDLE_WIDTH = 15
PADDLE_HEIGHT = 100
BALL_SIZE = 20
WHITE = (255, 255, 255)
FPS = 60

# Set up screen
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Pong Game")

# Define paddle and ball positions
left_paddle = pygame.Rect(30, SCREEN_HEIGHT // 2 - PADDLE_HEIGHT // 2, PADDLE_WIDTH, PADDLE_HEIGHT)
right_paddle = pygame.Rect(SCREEN_WIDTH - 30 - PADDLE_WIDTH, SCREEN_HEIGHT // 2 - PADDLE_HEIGHT // 2, PADDLE_WIDTH, PADDLE_HEIGHT)
ball = pygame.Rect(SCREEN_WIDTH // 2 - BALL_SIZE // 2, SCREEN_HEIGHT // 2 - BALL_SIZE // 2, BALL_SIZE, BALL_SIZE)

# Define movement variables
left_paddle_speed = 0
right_paddle_speed = 0
ball_speed_x = random.choice([5, -5])
ball_speed_y = random.choice([5, -5])

# Set up fonts
font = pygame.font.Font(None, 36)

# Game loop
clock = pygame.time.Clock()
running = True
while running:
    screen.fill((0, 0, 0))  # Fill the screen with black

    # Handle events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Paddle controls
    keys = pygame.key.get_pressed()
    if keys[pygame.K_w] and left_paddle.top > 0:
        left_paddle_speed = -10
    elif keys[pygame.K_s] and left_paddle.bottom < SCREEN_HEIGHT: left_paddle_speed = 10 else: left_paddle_speed = 0 if keys[pygame.K_UP] and right_paddle.top > 0:
        right_paddle_speed = -10
    elif keys[pygame.K_DOWN] and right_paddle.bottom < SCREEN_HEIGHT:
        right_paddle_speed = 10
    else:
        right_paddle_speed = 0

    # Update paddle positions
    left_paddle.y += left_paddle_speed
    right_paddle.y += right_paddle_speed

    # Update ball position
    ball.x += ball_speed_x
    ball.y += ball_speed_y

    # Ball collision with top/bottom
    if ball.top <= 0 or ball.bottom >= SCREEN_HEIGHT:
        ball_speed_y = -ball_speed_y

    # Ball collision with paddles
    if ball.colliderect(left_paddle) or ball.colliderect(right_paddle):
        ball_speed_x = -ball_speed_x

    # Ball out of bounds (reset position)
    if ball.left <= 0 or ball.right >= SCREEN_WIDTH:
        ball.x = SCREEN_WIDTH // 2 - BALL_SIZE // 2
        ball.y = SCREEN_HEIGHT // 2 - BALL_SIZE // 2
        ball_speed_x = random.choice([5, -5])
        ball_speed_y = random.choice([5, -5])

    # Draw paddles and ball
    pygame.draw.rect(screen, WHITE, left_paddle)
    pygame.draw.rect(screen, WHITE, right_paddle)
    pygame.draw.ellipse(screen, WHITE, ball)

    # Update screen
    pygame.display.flip()

    # Control the game speed
    clock.tick(FPS)

# Quit Pygame
pygame.quit()

Program Explanation

This Pong game is built using the pygame library, which helps us handle game development tasks such as screen management, input detection, and drawing shapes like rectangles and circles (for the paddles and ball).

Program Structure

  • Initialization: The program begins by initializing the Pygame library, defining the screen size, paddle dimensions, and ball size.
  • Game Objects: The paddles (left and right) and ball are represented as rectangular objects using the pygame.Rect class.
  • Game Loop: The game runs in a loop where it constantly checks for user input, moves the paddles, updates the ball position, detects collisions, and redraws everything on the screen.
  • Collision Handling: The ball changes direction when it hits the top or bottom of the screen or either of the paddles.
  • Game Speed: The frame rate is controlled using Pygame’s pygame.time.Clock to make the game play consistently.

How to Run the Program

  1. First, ensure that you have Python and Pygame installed on your computer. You can install Pygame using the following command:
    pip install pygame
  2. Save the provided Python code in a file, for example, pong_game.py.
  3. Open a terminal or command prompt and navigate to the directory where the file is located.
  4. Run the program by typing:
    python pong_game.py
  5. The game window will open, and you can start playing by controlling the left paddle with the W and S keys, and the right paddle with the UP and DOWN arrow keys.
© 2025 Learn Programming. All rights reserved.

 

By Aditya Bhuyan

I work as a cloud specialist. In addition to being an architect and SRE specialist, I work as a cloud engineer and developer. I have assisted my clients in converting their antiquated programmes into contemporary microservices that operate on various cloud computing platforms such as AWS, GCP, Azure, or VMware Tanzu, as well as orchestration systems such as Docker Swarm or Kubernetes. For over twenty years, I have been employed in the IT sector as a Java developer, J2EE architect, scrum master, and instructor. I write about Cloud Native and Cloud often. Bangalore, India is where my family and I call home. I maintain my physical and mental fitness by doing a lot of yoga and meditation.

Leave a Reply

Your email address will not be published. Required fields are marked *

error

Enjoy this blog? Please spread the word :)