Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

How to make a game in Python

Getting Started with Game Development in Python

If you're new to programming or have some basic knowledge about it, you might have wondered how to create your own game. Here, we will explore how to create a simple game using Python, a popular high-level programming language known for its simplicity and readability.

Setting up the Environment

Before we start coding, we need to set up our environment. We will be using a Python library called Pygame. It provides functionalities for game development, such as rendering graphics, handling keyboard and mouse events, and playing sounds. To install Pygame, simply type the following command in your terminal or command prompt:

pip install pygame

The Concept of Our Game

We're going to create a simple "Catch the falling objects" game. Imagine it like this: You're a basket holder at the bottom of the screen, and there are objects falling from the top of the screen. Your job is to catch as many objects as possible.

Designing Game Elements

The Player

The player in our game is the basket holder. In Pygame, we represent this as a rectangle. Here's how we define our player:

player = pygame.Rect(screen_width / 2, screen_height - 50, 50, 50)

This code creates a rectangle (our player) at the middle bottom of the screen with a width and height of 50 pixels.

The Falling Objects

The falling objects will be represented as circles. We will randomly generate these circles at the top of the screen. Here's a simple way to create a falling object:

falling_object = pygame.Rect(random.randint(0, screen_width - 50), 0, 50, 50)

This code generates a circle at a random horizontal position at the top of the screen.

The Game Loop

The game loop is the heart of every game. It's like a never-ending cycle of events that keep the game running. Think of it as a hamster wheel, where the hamster (our game) keeps running as long as the wheel (the loop) is turning.

Here's a simple game loop in Pygame:

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

This loop continuously checks for any events such as key presses, mouse movements, or the close button being clicked.

Handling Player Input

To move our basket holder, we need to handle keyboard inputs. Pygame allows us to do this easily:

keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
    player.x -= 5
if keys[pygame.K_RIGHT]:
    player.x += 5

This code moves the player 5 pixels to the left if the left arrow key is pressed and 5 pixels to the right if the right arrow key is pressed.

Detecting Collisions

A crucial part of our game is detecting if the falling object has been caught by the player. Pygame provides a simple way to detect collisions:

if player.colliderect(falling_object):
    score += 1

This checks if the player rectangle and the falling object rectangle overlap, which means the object has been caught.

Drawing on the Screen

To bring our game to life, we need to draw our game elements on the screen. We do this within our game loop:

screen.fill((0, 0, 0))
pygame.draw.rect(screen, (255, 255, 255), player)
pygame.draw.ellipse(screen, (255, 0, 0), falling_object)
pygame.display.flip()

This code fills the screen with black, then draws the player and the falling object in white and red, respectively. The pygame.display.flip() function updates the screen with what we've drawn.

Putting It All Together

Now that we've broken down each part of our game, we can put it all together. Here's the full code for our simple game:

import pygame
import sys
import random

pygame.init()
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
player = pygame.Rect(screen_width / 2, screen_height - 50, 50, 50)
falling_objects = []

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

    if random.randint(0, 100) < 2:
        falling_objects.append(pygame.Rect(random.randint(0, screen_width - 50), 0, 50, 50))

    for object in list(falling_objects):
        object.y += 5
        if player.colliderect(object):
            falling_objects.remove(object)
        elif object.y > screen_height:
            falling_objects.remove(object)

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player.x -= 5
    if keys[pygame.K_RIGHT]:
        player.x += 5

    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, (255, 255, 255), player)
    for object in falling_objects:
        pygame.draw.ellipse(screen, (255, 0, 0), object)
    pygame.display.flip()

Conclusion

Like a lovingly cooked meal, creating a game from scratch is a rewarding experience that allows us to taste the fruits of our labor. We've taken simple ingredients—rectangles, circles, keyboard inputs, and a game loop—and whipped up a fun, interactive game. But just like cooking, the real joy lies in experimenting. So, why not spice up this game? Add more objects, create levels, or even introduce power-ups. Remember, the kitchen (or in this case, Python) is your playground. Happy coding!