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:
- Initialization:
pygame.init()
initializes all Pygame modules. - Window Setup: We create a window with a width of 800 pixels and a height of 600 pixels.
- 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:
- Player Properties: We set the size, color, starting position, and speed of the player.
- Movement:
pygame.key.get_pressed()
checks what keys are pressed. We use the arrow keys to move the player around the screen. - Bounds Check: We prevent the player from leaving the window with
max()
andmin()
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:
- Target: A red rectangle is placed as the target.
- Collision Detection: We check if the player’s rectangle overlaps with the target’s rectangle.
- 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.