Sunday Funday: Pygame For Kids

Apr 14, 2024 | Programming, Python

Hello, young coders and coding mentors / parents! Today we’re diving into an exciting first project perfect for kids based on Pygame – building a Pong clone. Pong is a classic two-player game where each player controls a paddle and tries to hit a ball back and forth across the screen. It’s a fantastic introduction to game development, combining simple concepts like collision detection, game logic, and user input.

Why Python & Pygame for Kids?

  • Easy to Learn: Python’s syntax is clean and readable, perfect for beginners.
  • Creativity on Display: Building a game like Pong from scratch allows kids to see direct results of their coding, tweaking, and creativity.
  • Engaging and Fun: Learning through game development is engaging and makes the learning process enjoyable.

Setting Up Your Game Development Environment

First, let’s set everything up:

  1. Install Python: Download the latest version of Python from python.org and install it. Make sure to tick the box that says “Add Python to PATH”. If you plan to run multiple versions of Python on the same system, I recommend taking a look at Pyenv, a utility for managing multiple versions of Python.
  2. Install Pygame: Open your terminal and run pip3 install pygame to install the Pygame library.
  3. Set Up Your Editor: There are a lot of great options for writing Python code, but for a learning project like this I recommend Visual Studio Code, because it’s cross-platform and utilizes the normal common keyboard shortcuts you’ve become used to for your OS.

Building Your Pong Game

Now, let’s jump into the code:

import pygame
import sys

pygame.init()

width, height = 800, 600
screen = pygame.display.set_mode((width, height))

white = (255, 255, 255)
black = (0, 0, 0)

paddle_width, paddle_height = 15, 90
player_speed = 10

player = pygame.Rect(30, height / 2 - paddle_height / 2, paddle_width, paddle_height)
opponent = pygame.Rect(width - 30 - paddle_width, height / 2 - paddle_height / 2, paddle_width, paddle_height)

ball = pygame.Rect(width / 2 - 15, height / 2 - 15, 30, 30)
ball_speed_x, ball_speed_y = 7, 7

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    keys = pygame.key.get_pressed()
    if keys[pygame.K_UP] and player.top > 0:
        player.y -= player_speed
    if keys[pygame.K_DOWN] and player.bottom < height:
        player.y += player_speed

    # Ball movement
    ball.x += ball_speed_x
    ball.y += ball_speed_y

    if ball.top <= 0 or ball.bottom >= height:
        ball_speed_y = -ball_speed_y

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

    # Redraw screen
    screen.fill(black)
    pygame.draw.rect(screen, white, player)
    pygame.draw.rect(screen, white, opponent)
    pygame.draw.ellipse(screen, white, ball)
    pygame.display.flip()
    pygame.time.Clock().tick(60)  # Frames per second

You’ve now got the most basic version of Pong working! From here, you can add more features, like a scoring system, increasing difficulty levels, or more sophisticated AI for the opponent paddle.

Keep the Kid Learning and Having Fun

Building games is a fantastic way to learn programming and to be honest my desire to learn more about the SEGA Genesis games that I still love to this day was one of the primary factors in my getting interested in coding as a boy. The great thing about starting with something small like Pong is that it’s straightforward enough to be challenging without being discouraging to the little ones and leaves plenty of room for expansion and further learning.

Check back for more fun projects and tips on making coding a rewarding adventure. Let’s keep the fun in fundamentals! Happy coding! Also, if you liked this post, please reach out on LikedIn, Mastodon or Twitter. Also, if your company could use some automation or general help with their ERP system, please schedule a time to chat about Alice and my other solutions!

More from Mike:

About Me

Hi! I’m Mike! I’m a software engineer who codes at The Mad Botter INC. You might know me from Coder Radio or The Mike Dominick Show.  Drop me a line if you’re interested in having some custom mobile or web development done.

Follow Me

© 2024 Copyright Michael Dominick | All rights reserved