Pygame Basic Code Tutorial – Complete Guide

Welcome to the exciting world of Pygame! Today, we’ll be learning the basics of this fantastic framework for Python programming. If you’ve ever wanted to create your own computer games but didn’t know where to start, this tutorial is for you.

What is Pygame?

Pygame is an open-source library for the Python programming language specifically intended for game development. Leveraging Python’s easy-to-learn syntax and vast capabilities, Pygame enables beginners and experienced coders alike to breathe life into their gaming ideas.

What is it used for?

As a cross-platform set of modules, Pygame is designed for video game development. You can create anything from single-player puzzle games to complex, multiplayer online games. Whether you fancy creating 2D graphic applications or simple textual interfaces, Pygame can handle it all.

Why should you learn it?

Learning Pygame not only provides you with a fantastic introduction to game development but also bolsters your understanding of Python. Mastering Pygame opens up opportunities to create your own games or even pursue a career in game development. Remember, skills acquired in Python translate well to other programming languages, making this a wise investment of your learning time. So, let’s dive into some code!

Getting Started with Pygame

To begin using Pygame, you must firstly install it using pip:

pip install pygame

Once installed, here’s a handy piece of code to help you create a simple Pygame window:

import pygame
pygame.init()
win = pygame.display.set_mode((800, 600))
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()

In the code above, we first import the Pygame module, initialize it, and define the window dimensions.

Adding Event Handling in Pygame

Pygame allows us to control how our game interacts with specific events, such as keyboard or mouse input. Here is a sample code for a basic event handling loop within a Pygame window:

import pygame
pygame.init()
win = pygame.display.set_mode((800, 600))
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                print("You pressed Up!")

This section of code allows your game to react whenever the Up arrow key is pressed, printing out “You pressed Up!

How to Keep Learning Pygame and Python?

At Zenva, we’re delighted to help both fledgling coders and experienced programmers expand their horizons with our Python Mini-Degree program. Embark on a project-oriented learning journey covering a vast array of subjects such as game development, data visualization, web development, machine learning and more. Check it out here to continue your learning journey.

Conclusion

In this tutorial, we’ve explored the basics of Pygame, an exciting tool for game development using Python. We discussed why learning it is a smart move for aspiring coders and game developers alike.

Remember, a single spark can kindle a great fire – the code snippets we’ve introduced here can be the foundation of your game development journey. Don’t stop here – there’s a fascinating world awaiting you!

If you’re ready to take the next step and delve deeper into Python and Pygame, Zenva is ready to guide you along the way. Our Python Mini-Degree is an excellent resource to take your coding skills to the next level. Happy coding!

CTA Small Image
FREE COURSES AT ZENVA
LEARN GAME DEVELOPMENT, PYTHON AND MORE
ACCESS FOR FREE
AVAILABLE FOR A LIMITED TIME ONLY

Working with Sprites in Pygame

Enliven your Pygame projects by incorporating sprites, or graphics that move within the game. Here’s how to load and display a sprite:

import pygame
pygame.init()

win = pygame.display.set_mode((800, 600))

sprite_img = pygame.image.load('sprite.png')

win.blit(sprite_img, (10, 10)) # This draws our sprite image onto screen at (10, 10)

pygame.display.update() # This line updates the screen

In the above code we’re loading a sprite image ‘sprite.png’ from our working directory and displaying it on the screen.

Moving Sprites on Screen

Games are interactive, which means your sprites need to move. This example shows you how to move a sprite across the screen:

import pygame
pygame.init()

win = pygame.display.set_mode((800, 600))

sprite_img = pygame.image.load('sprite.png')
x, y = 10, 10

while True:
    win.blit(sprite_img, (x, y))
    x += 1 # This line moves the sprite on x-axis 
    pygame.display.update()
    pygame.time.delay(10) # This delays for 10 milliseconds to control the speed of movement

This code moves your sprite horizontally. You can also control the velocity of the sprite with the delay function.

Sprite Collision

Chances are, your game will need interactive elements where sprites collide. Below is the code for checking collision between two sprites:

import pygame
pygame.init()

win = pygame.display.set_mode((800, 600))

sprite1 = pygame.image.load('sprite1.png')
sprite2 = pygame.image.load('sprite2.png')

rect1 = sprite1.get_rect(topleft=(100,100))
rect2 = sprite2.get_rect(topleft=(150,150))

if rect1.colliderect(rect2):
    print("Sprites have collided!")

The function ‘colliderect()’ checks for a collision between sprites and returns ‘True’ if a collision is detected.

Playing Sounds

Bring your games to life using sounds! Pygame simplifies incorporating sound files into your games:

import pygame
pygame.init()

pygame.mixer.init() # Initialize the mixer module

sound = pygame.mixer.Sound('sound.wav') # Load a sound file

sound.play() # Play the sound

The mixer module controls sound operations. You can load and play most audio file types easily.

In the next part of this tutorial, we’ll explore creating controls, developing levels, and how to begin structuring your own game.

Creating Player Controls

Building on top of the previous example, let’s get our sprite to respond to keyboard inputs to allow player control. Here’s how to do it:

import pygame
pygame.init()

win = pygame.display.set_mode((800, 600))

sprite_img = pygame.image.load('sprite.png')
x, y = 10, 10

while True:
    keys = pygame.key.get_pressed()
    if keys[pygame.K_UP]:
        y -= 1
    elif keys[pygame.K_DOWN]:
        y += 1
    elif keys[pygame.K_LEFT]:
        x -= 1
    elif keys[pygame.K_RIGHT]:
        x += 1

    win.blit(sprite_img, (x, y))
    pygame.display.update()
    pygame.time.delay(10)

In this snippet, when the player presses the arrow keys, the sprite moves accordingly, providing player control.

Setting Up Levels and Loading Maps

Creating levels in Pygame can be accomplished efficiently using 2D arrays. Consider the following code that loads a basic map for a game:

# Let's represent our game map with a 2D array (list of lists)
game_map = [
 ['W', 'W', 'W', 'W', 'W'],
 ['W', ' ', ' ', ' ', 'W'],
 ['W', ' ', 'P', ' ', 'W'],
 ['W', ' ', ' ', ' ', 'W'],
 ['W', 'W', 'W', 'W', 'W']
]

# W represents walls, P is for player. This generates a walled structure with player inside.

While this merely shows the conceptual process, actual implementation would involve loading sprite images or tile-sets, creating a much richer graphical representation.

Adding Timer Events

Consider a scenario where you want an event to occur every few seconds. Pygame allows you to create custom timer events:

import pygame
pygame.init()

CUSTOM_EVENT = pygame.USEREVENT + 1
pygame.time.set_timer(CUSTOM_EVENT, 1000) # The event occurs every 1000 milliseconds

while True:
    for event in pygame.event.get():
        if event.type == CUSTOM_EVENT:
            print("Custom event triggered!")

In this snippet, a custom event named ‘CUSTOM_EVENT’ gets triggered every 1 second, printing “Custom event triggered!” to the console.

To understand the process of structuring a game, we will take a minimalistic approach: define the title, initiate Pygame, create game objects, and define the game loop.

import pygame
pygame.init()

# Game Title
pygame.display.set_caption("My Pygame Game")

# Create game objects
player = pygame.image.load('player.png')

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

    # Game logic goes here
            
pygame.quit()

In this barebones structure, the game window will close upon clicking the close button. You can add movements, collisions, and event handling in the “Game logic goes here” section. This flexible structure empowers you to build the game you envision.

Stay tuned as we explore more advanced topics both in Pygame and Python. For an even deeper dive, consider joining our Python Mini-Degree that includes Pygame.

Handling Animations in Pygame

Animations bring life to your game characters. Pygame makes it easier to load and play sprite animations. Here’s an example code snippet for animating a sprite:

import pygame
pygame.init()

win = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()

sprite_frames = [] # List to store each frame of the sprite animation

# Load each frame into our list
for i in range(6):
    img = pygame.image.load(f'sprite_frame{i}.png')
    sprite_frames.append(img)

current_frame = 0 # Start with the first frame

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

    win.fill((0,0,0)) # Clear screen with black color
    win.blit(sprite_frames[current_frame], (50, 50)) # Draw current frame
    current_frame = (current_frame + 1) % 6 # Cycle through each frame
    pygame.display.update()
    clock.tick(10) # Control <a class="wpil_keyword_link" href="https://gamedevacademy.org/best-fps-tutorials/" target="_blank" rel="noopener" title="FPS" data-wpil-keyword-link="linked">FPS</a> to control animation speed

This piece of code cycles through each frame of the sprite animation at a speed controlled by the clock tick, creating the impression of movement.

Handling Mouse Input

Just like keyboard input, Pygame also allows the handling of mouse input, enhancing your game play experience. Here’s an example:

import pygame
pygame.init()

win = pygame.display.set_mode((800, 600))

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
        elif event.type == pygame.MOUSEBUTTONDOWN:
            m_pos = pygame.mouse.get_pos()
            print("You clicked at location: " + str(m_pos))

In this snippet, the location of a mouse click within the Pygame window will be output to the console in the form of an (x, y) tuple.

Moving forward, take a look at how we can handle game states:

import pygame
pygame.init()

pygame.display.set_caption("Game State Demo")

def menu():
    print("Game menu!")

def game():
    print("Being in a game!")

def game_over():
    print("The game is over!")

states = {"Menu": menu, "Game": game, "Game Over": game_over}

current_state = "Menu"

while True:
    states[current_state]()
    current_state = input("Enter the next state: ")

Although very basic, this example shows how to set up carry different actions based on the current state of the game.

Lastly, we’ll create a small example of a game that takes together a lot of the elements we’ve explained:

import pygame
pygame.init()

win = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()

player = pygame.image.load('player.png')
background = pygame.image.load('background.png')

x, y = 100, 100

while True:
    keys = pygame.key.get_pressed()
    if keys[pygame.K_UP]:
        y -= 5
    if keys[pygame.K_DOWN]:
        y += 5
    if keys[pygame.K_LEFT]:
        x -= 5
    if keys[pygame.K_RIGHT]:
        x += 5

    win.blit(background, (0, 0))
    win.blit(player, (x, y))

    pygame.display.update()
    clock.tick(30)

In this game, a player sprite moves around the screen, with the keyboard arrows, over a background image. The clock tick keeps the game running smoothly.

As is evident from all of these examples, Pygame offers a plethora of features for game development. Whether you’re a seasoned coder or beginner, tooling around with Pygame can be a fun and rewarding way to get into the world of programming. To learn more about Python and game development, consider our Python Mini-Degree. It covers a wide range of topics and can help you master Python programming and game creation.

Where To Go Next: Your Path to Python Mastery

Through this engaging walkthrough, you’ve taken your first steps into the exciting world of Pygame and Python game development. But this is just the beginning of a path filled with endless opportunities for learning and creativity. How do you continue your journey?

We at Zenva recommend our Python Mini-Degree program, a comprehensive collection of courses focused on Python programming. In this Mini-Degree, you will cover various topics such as coding fundamentals, algorithms, object-oriented programming, and game and app development. What sets us apart is our focus on project-based learning – meaning you will learn by creating your own games, crafting unique algorithms, and developing real-world apps.

You also have the option to delve into specific topics with our broad collection of Python courses available here. Whether you are a beginner or a seasoned coder looking to refresh or broaden your skills, our courses suit a range of abilities. All our lessons are flexible and self-paced, ensuring a learner-friendly experience.

Take the exciting journey with us and let Zenva guide you through the world of Python and beyond. The road to mastering Python begins here!

Conclusion

Embarking on the journey into the world of Pygame and Python game development opens up infinite possibilities for creating innovative games. This programming exploration nurtures creativity, logical thinking, and solid programming skills that are in high demand in today’s tech-centric world.

Irrespective of whether you are a hobbyist, a student, or a professional developer, having Python and Pygame in your coding toolkit empowers you to transform your unique game ideas into reality. Today’s learning sets the foundation for a brighter tomorrow. Take the first step in your Python mastery with Zenva’s dynamic and immersive Python Mini-Degree program. Remember, every great game starts with a single line of code!

Did you come across any errors in this tutorial? Please let us know by completing this form and we’ll look into it!

FREE COURSES
Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.