Make a 2D Side-Scroller Game With PyGame

In this course, you’ll learn about creating games using Python and the library PyGame.

By the end of this course, you’ll be able to:

  • Draw items on your screen
  • Play sound effects and music
  • Handle user input
  • Implement event loops
  • Describe how game programming differs from standard procedural Python programming

This primer assumes you have a basic understanding of writing Python programs, including user-defined functions, imports, loops, and conditionals. You should also be familiar with how to open files on your platform. A basic understanding of object-oriented Python is helpful as well. pygame works with most versions of Python, but Python 3.6 is recommended and used throughout this article.

What’s Included:

Downloadable Resources:

About Christopher Bailey

Chris is an avid Pythonista and creates video tutorials for Real Python. He is a programmer and data analyst. He creates music under the name Tripnet. Chris lives in Colorado with his wife and two dogs.

» More about Christopher

Each tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who worked on this tutorial are:

Participant Comments

Avatar image for Nick M

Nick M on April 17, 2021

That was a wicked fun course. Loved it. Learned tons and really made me value the idea of libraries of functions and object orientation. I’m remembering back to my early coding days (80s, 90s) with BBC Basic or Pascal and back then I’d have had to manage so many more things by hand. This is sooooooo much easier.

Very well done course that I really enjoyed. Thanks!

Avatar image for mikesult

mikesult on May 4, 2020

Thanks Chris, Excellent course. You covered so many of the elements in a nice incremental way and always kept a working program at all stages.

One strange behavior for me was when loading the sprite images of the jet and missile, if I used the .convert() method then the .set_colorkey() method on the next line didn’t create the desired transparency. If I removed the .convert() method then the .set_colorkey() method did work. The cloud sprite worked fine when using the .convert() method. Very strange.

I learned a lot, thanks!

Avatar image for David Wright

David Wright on April 26, 2020

Thank you Chris for a great course. I think I have found what I want to do with my Python knowledge.

Avatar image for sumakolurmath

sumakolurmath on March 27, 2020

Thanks Chris, for the awesome course!

« Browse All Courses