How to develop a game in Python

It’s super exciting and a rewarding project, developing a game in Python. Python is actually a very wonderful language to code simple games for the reasons that it’s readably simple and highly extensive libraries can be found anywhere. The most well-known library of making games with Python is called Pygame. Below is how to make a basic game in Python and using Pygame in step-by-step detail.

Step 1: Install Pygame

First, you need to install the Pygame library. You can do this by running the following command in your terminal or command prompt:

pip install pygame

Step 2: Setting Up the Game Window

Let’s start by creating a basic game window. This is where all the game action will take place.

import pygame
import sys

# Initialize Pygame
pygame.init()

# Set up the game window
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Simple Game')

# Set up the game clock
clock = pygame.time.Clock()

# Main game loop
running = True
while running:
    # Handle events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Fill the screen with a color (e.g., white)
    screen.fill((255, 255, 255))

    # Update the display
    pygame.display.flip()

    # Set the frame rate (e.g., 60 frames per second)
    clock.tick(60)

# Quit Pygame
pygame.quit()
sys.exit()

Code Explanation:

  1. Initialization: pygame.init() initializes all Pygame modules.
  2. Window Setup: We create a window with a width of 800 pixels and a height of 600 pixels.
  3. Game Loop: It keeps the game running. The game looks for events such as users closing the window and then updates the display.

Step 3: Adding a Player (e.g., a Rectangle)

Next, we will add a simple player (represented as a rectangle) that moves around the screen.

import pygame
import sys

pygame.init()

# Set up the game window
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Simple Game')

# Set up the game clock
clock = pygame.time.Clock()

# Player settings
player_width = 50
player_height = 50
player_color = (0, 128, 255)
player_x = WIDTH // 2
player_y = HEIGHT // 2
player_speed = 5

# Main game loop
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Get the pressed keys
    keys = pygame.key.get_pressed()

    # Move player
    if keys[pygame.K_LEFT]:
        player_x -= player_speed
    if keys[pygame.K_RIGHT]:
        player_x += player_speed
    if keys[pygame.K_UP]:
        player_y -= player_speed
    if keys[pygame.K_DOWN]:
        player_y += player_speed

    # Ensure the player stays within bounds
    player_x = max(0, min(player_x, WIDTH - player_width))
    player_y = max(0, min(player_y, HEIGHT - player_height))

    # Fill the screen with a color
    screen.fill((255, 255, 255))

    # Draw the player
    pygame.draw.rect(screen, player_color, (player_x, player_y, player_width, player_height))

    # Update the display
    pygame.display.flip()

    # Set the frame rate
    clock.tick(60)

pygame.quit()
sys.exit()

Code Explanation:

  1. Player Properties: We set the size, color, starting position, and speed of the player.
  2. Movement: pygame.key.get_pressed() checks what keys are pressed. We use the arrow keys to move the player around the screen.
  3. Bounds Check: We prevent the player from leaving the window with max() and min() functions.

Step 4: Adding a Basic Game Object (e.g., a Target)

Let’s add a target object that the player has to reach. When the player touches it, the game will display a “You Win!” message.

import pygame
import sys

pygame.init()

# Set up the game window
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Simple Game')

# Set up the game clock
clock = pygame.time.Clock()

# Player settings
player_width = 50
player_height = 50
player_color = (0, 128, 255)
player_x = WIDTH // 2
player_y = HEIGHT // 2
player_speed = 5

# Target settings
target_width = 50
target_height = 50
target_color = (255, 0, 0)
target_x = 300
target_y = 200

# Font for displaying text
font = pygame.font.SysFont(None, 55)

# Main game loop
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Get the pressed keys
    keys = pygame.key.get_pressed()

    # Move player
    if keys[pygame.K_LEFT]:
        player_x -= player_speed
    if keys[pygame.K_RIGHT]:
        player_x += player_speed
    if keys[pygame.K_UP]:
        player_y -= player_speed
    if keys[pygame.K_DOWN]:
        player_y += player_speed

    # Ensure the player stays within bounds
    player_x = max(0, min(player_x, WIDTH - player_width))
    player_y = max(0, min(player_y, HEIGHT - player_height))

    # Check for collision with the target
    if (player_x < target_x + target_width and
        player_x + player_width > target_x and
        player_y < target_y + target_height and
        player_y + player_height > target_y):
        # Display win message
        screen.fill((255, 255, 255))
        win_text = font.render('You Win!', True, (0, 255, 0))
        screen.blit(win_text, (WIDTH // 2 - win_text.get_width() // 2, HEIGHT // 2 - win_text.get_height() // 2))
        pygame.display.flip()
        pygame.time.wait(2000)  # Wait 2 seconds before closing
        running = False

    # Fill the screen with a color
    screen.fill((255, 255, 255))

    # Draw the player and the target
    pygame.draw.rect(screen, player_color, (player_x, player_y, player_width, player_height))
    pygame.draw.rect(screen, target_color, (target_x, target_y, target_width, target_height))

    # Update the display
    pygame.display.flip()

    # Set the frame rate
    clock.tick(60)

pygame.quit()
sys.exit()

Code Explanation:

  1. Target: A red rectangle is placed as the target.
  2. Collision Detection: We check if the player’s rectangle overlaps with the target’s rectangle.
  3. Win Condition: It displays the message “You Win!” for 2 seconds in case the target is touched.

Step 5: Further Enhancements

Now that you have the basic structure, you can enhance your game by:

  • Adding multiple levels
  • Implementing sound effects and music
  • Adding different game objects (e.g., obstacles, enemies)
  • Using images or animations for the player and background
  • Keeping track of the score

This example demonstrates how you can create a simple game with Python using Pygame.