Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Michael Eramo

Have you learned the fundamentals of Python and then asked yourself; what's next?

If so, consider taking this course which will start you on your journey to making your own playable, fun, and rather addicting video games using Python and the Pygame library. 

So often, when students ask for advice they are told to, "Go build something" or "Get involved on a project" but have no idea what projects to build or get involved in.

Read more

Have you learned the fundamentals of Python and then asked yourself; what's next?

If so, consider taking this course which will start you on your journey to making your own playable, fun, and rather addicting video games using Python and the Pygame library. 

So often, when students ask for advice they are told to, "Go build something" or "Get involved on a project" but have no idea what projects to build or get involved in.

This course will set you on your way. In this course I will walk you though, step by step, on how to to design the layout and the functionality of 7 unique, engaging, and most importantly, FUN games.  By the end of this course, I promise that you will be coming up with your own game ideas and feel confident enough in your abilities to create them.

In my experience teaching computer science, students tend to flourish under the basics but hit a wall when we approach object oriented programming.  The shift to using Classes as a way to structure code is difficult and often times students don't have enough exposure to meaningful examples of how to use Classes to help make complex code more efficient.  I believe by the end of this course, you will understand how to use classes.

  • This course is designed in such a way that NO KNOWLEDGE OF CLASSES is needed to start.   We will begin by learning the fundamentals of the Pygame library and video game design concepts as we move onto making 4 very fun arcade style games.

  • We will then review/teach concepts of classes and inheritance in Python as they are crucial tools to help us take our games to the next level using Sprites and Sprite Groups.  We will spend some time learning more intermediate concepts such as how to use sprites, sprite groups, and various sprite collision detection methods as we move onto making 2 intermediate level games.

  • The third portion of this course will focus on more advanced topics such as creating a tile map and using/reading it to create more complex level designs, using 2 dimensional vectors to aid with more complex player movement such as running and jumping under forces of friction and gravity, and adding character animations to make our games really come to life.   We will use these more advanced concepts as well as all of our previous knowledge to make one last game that will be a great final project for you to show off.

I'm really proud of this class.  I really believe it not only is a great learning experience but it is also A LOT OF FUN.   I hope you consider joining and taking part in the learning.

Enroll now

What's inside

Learning objectives

  • Fundamentals of the pygame library and overall video game design.
  • The use of classes and inheritance to make complex code more organized and efficient.
  • How to create surfaces, blit images, render text, handle user input, and detect collisions.
  • How to work with sprites, sprite groups, and more robust collision methods.
  • How to create our own tile map and read a tile map to design a game level.
  • How to use 2 dimensional vectors to handle complex platformer motion such as running and jumping under gravity and friction.
  • How to add custom character animations using sprite sheets to help make our games really come to life.
  • How to use collision masks to have pixel perfect collisions when needed.
  • Create 7 awesome games in total! 4 that are very beginner friendly, 2 that are intermediate, and 1 that is advanced.

Syllabus

Setup and Installation
Course Preview and Introduction
Installing Python
Installing Visual Studio Code
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Starts with the fundamentals of Pygame and video game design, making it accessible for those with basic Python knowledge
Teaches how to use classes and inheritance in Python through practical game development examples, reinforcing object-oriented programming concepts
Covers a range of game development topics, including creating tile maps, using 2D vectors for movement, and adding character animations
Includes the creation of seven games with increasing complexity, providing a structured learning path from beginner to advanced concepts
Uses Visual Studio Code, a popular and widely used IDE, which is helpful for learners looking to build industry-relevant skills
Employs Pygame, which, while not cutting edge, is still a viable library for rapid prototyping and game jams, and is useful for learning game design principles

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Hands-on python game development projects

According to learners, this course offers a highly practical and engaging approach to learning game development with Python and Pygame. Students particularly praise the opportunity to build 7 different games, which provides valuable hands-on experience and solidifies concepts. Many reviewers highlight the course's effectiveness in teaching Pygame fundamentals and easing the transition into object-oriented programming using classes and sprites. While the initial games are suitable for beginners, the later sections introduce more advanced topics like tile maps and vector-based movement, which some learners found challenging but rewarding. Overall, it's seen as a fun and effective way to apply Python knowledge and create playable games.
Assumes prior knowledge of Python fundamentals.
"You definitely need to be comfortable with Python basics before starting this course."
"As the course description says, it's for those who have learned Python fundamentals and want to apply them."
"Having a solid understanding of Python loops, functions, and data structures is necessary."
Later modules introduce more complex, challenging ideas.
"The advanced section, especially tile maps and vector movement, was a significant step up in difficulty."
"While informative, the vector math and tile map implementation in the final game required more effort and perhaps external resources to fully grasp."
"Wish there was a little more explanation or examples for the 2D vector section, it was tough."
"The complexity ramps up towards the end, which is good, but be prepared for a challenge in the last game."
Provides a strong foundation in Pygame basics.
"The early lessons on Pygame fundamentals like surfaces, blitting, and events were explained very clearly."
"I had no prior Pygame experience, and the initial modules made it easy to grasp the basics needed for game development."
"Covers the essential Pygame functions you need without getting bogged down in unnecessary details."
Successfully introduces object-oriented concepts.
"The section on classes and sprites finally made object-oriented programming click for me in a practical context."
"Using sprites and sprite groups for the intermediate games was a great way to see OOP applied to game objects."
"I appreciated how the course built up to OOP, starting simple and then showing how classes improve code organization."
"Understanding inheritance through the examples in the course was very helpful."
Focuses on building real games for practical skills.
"The best part of the course is building the 7 different games... it really helps solidify the concepts."
"Hands-on projects are exactly what I needed after learning Python basics. Building games was fun and practical."
"I loved the step-by-step approach to creating actual, playable games. It's much better than just theory."
"Building the games one by one provided clear milestones and a great sense of accomplishment."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in The Art of Doing: Video Game Creation With Python and Pygame with these activities:
Review Python Fundamentals
Solidify your understanding of Python basics to ensure a smooth transition into game development with Pygame.
Browse courses on Python Basics
Show steps
  • Review data types, loops, and conditional statements.
  • Practice writing simple Python scripts.
Review 'Python Crash Course'
Reinforce Python fundamentals with a comprehensive guide that includes practical exercises and projects.
Show steps
  • Complete the exercises at the end of each chapter.
  • Read the chapters covering basic Python syntax and data structures.
Pygame Tutorials and Examples
Practice implementing basic Pygame functionalities like creating surfaces, drawing shapes, and handling events.
Show steps
  • Follow online tutorials to create simple Pygame applications.
  • Experiment with different Pygame functions and parameters.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Simple Pygame Project: Bouncing Ball
Apply your knowledge by creating a simple game with basic movement and collision detection.
Show steps
  • Create a Pygame window and draw a ball on the screen.
  • Implement movement for the ball.
  • Add collision detection to bounce the ball off the edges of the window.
Document Your Game Development Journey
Reflect on your learning process and share your insights with others.
Show steps
  • Create a blog or online journal to document your progress.
  • Write about the challenges you face and the solutions you find.
  • Share your code and game demos with the community.
Review 'Game Programming Patterns'
Learn about common design patterns used in game development to improve code structure and maintainability.
Show steps
  • Read about different game programming patterns.
  • Identify opportunities to apply these patterns in your own projects.
Contribute to a Pygame Project
Gain experience working on a real-world project and collaborate with other developers.
Show steps
  • Find an open-source Pygame project on GitHub or GitLab.
  • Identify a bug or feature you can contribute to.
  • Submit a pull request with your changes.
Expand Zombie Knight
Build on the final project by adding new features, levels, and enemies.
Show steps
  • Brainstorm new features and improvements for the game.
  • Implement these features using the concepts learned in the course.
  • Share your updated game with the community.

Career center

Learners who complete The Art of Doing: Video Game Creation With Python and Pygame will develop knowledge and skills that may be useful to these careers:
Indie Game Developer
Indie Game Developers work independently or in small teams to create and publish their own video games. For an Indie Game Developer, this course provides essential training in game design, programming, and project management. The course's focus on Python and Pygame offers accessible tools for creating compelling games. The course guides you through the entire game development process. It involves using tile maps, character animation and vector implementation for movement under the effects of physics. By the end of the course, the Indie Game Developer understands how to create fun and engaging games.
Game Developer
A Game Developer brings video game concepts to life through code, design, and implementation. This course provides a solid foundation in game creation using Python and the Pygame library, equipping aspiring Game Developers with practical skills in designing game layouts and functionalities. The course walks you through the development of seven unique games, building confidence and creative thinking. Exposure to object oriented programming helps Game Developers write more efficient and structured code. The course's journey from simple arcade games to more complex level designs, including tile maps and character animations, prepares students for the challenges of professional game development.
Python Developer
Python Developers specialize in creating applications using the Python programming language. This course directly aligns with the needs of a Python Developer, providing practical experience in applying Python within the context of video game creation. Expertise in Pygame, a popular Python library for game development, demonstrates proficiency in a specific and valuable area. The course's exploration of object oriented programming concepts via classes and inheritance is fundamental to Python development, and the creation of seven different games offers a diverse portfolio of projects. The end result is expertise in Python and an ability to develop software across games, scripts, and tools.
Educational Game Developer
Educational Game Developers design and develop games that teach specific subjects or skills. The act of building seven unique games using Python and the Pygame library provides a strong foundation for this role. The course's step-by-step approach, focus on game design, and character animations are directly applicable to creating engaging educational content. Understanding how collision detection, user input, and sprite animations work is important for making fun and education games. By the end of the course, the Educational Game Developer will be well versed in making games that teach specific subjects.
Software Engineer
Software Engineers design, develop, and test software applications. The Python skills taught in this course are highly transferable to software engineering, with the practical video-game-creation experience demonstrating an ability to apply programming concepts effectively. The course emphasizes the use of classes and inheritance, which are essential for writing maintainable and scalable code in any software project. Skills in creating collision detection algorithms are valuable. The step-by-step approach used in game design mirrors software development processes, thereby providing learners with a hands-on understanding of how to design and build complex systems.
Game Designer
Game Designers conceptualize and design the gameplay, story, and rules of video games. While this role is not purely technical, this game-creation course provides value because a Game Designer needs to understand the technical possibilities and limitations when planning a game. The course offers practical experience with core game mechanics, level design, and character animation. Game designers taking this course can learn how a video game's design relates to player experience and technical feasibility. The understanding of tile maps, collision detection, and user input handling help a Game Designer plan the implementation of game elements.
Graphics Programmer
Graphics Programmers specialize in creating and optimizing the visual aspects of software, including video games. The course's introduction to Pygame provides a foundation in graphics rendering, sprite management, and animation. The course's lessons on drawing surfaces, blitting images, and creating animations are the foundations of 2D game programming. Collision masks, sprite groups, and 2D vectors all contribute to the skill set of visual programmers. This course helps build experience in visual programming.
Simulation Developer
Simulation Developers create software that simulates real-world or hypothetical scenarios for training or research purposes. A key skill for Simulation Developers is the ability to model realistic interactions and environments, an area directly addressed in this course through the development of game mechanics, physics, and collision detection. The use of vectors for player movement and the implementation of gravity and friction simulate real world physics. Further, the creation of tile maps to design game levels is analogous to building simulated environments. This course provides skills that translate into simulations for training, research, and analysis.
Game Tester
Game Testers play video games to identify bugs, glitches, and design flaws. While this course does not directly involve game testing, the experience of creating games from scratch fosters an understanding of how games work. A game tester with experience developing games has a deep familiarity with the game development pipeline. This course provides the foundations of video game design and creation. The understanding of collision detection and user input allow a game tester to better identify areas of games that could be improved.
Unity Developer
Unity Developers use the Unity engine to create video games and simulations. While this course focuses on Python and Pygame rather than Unity, the fundamental game development skills translate across platforms. Skills in game design, collision detection, character animation, and level design are valuable to a Unity Developer. The course exposes the learner to essential game development principles and practices. The developer, with some additional training, could use these skills with the Unity engine.
Front-End Developer
Front End Developers create the user interfaces of websites and web applications. Although this course focuses on video games, it provides Front End Developers experience with graphical user interfaces, event handling, and user input. The Pygame library offers tools for rendering graphics and handling user interactions, similar to what's required in web development. Working through the course, the student learns how to manage user action, graphical elements, and performant code. The hands-on experience in the course helps those who wish to work on the visual parts of web applications.
Technical Artist
Technical Artists bridge the gap between artists and programmers in game development, and this course may be useful by providing a foundation in game programming concepts. The course teaches the creation of tile maps, character animations, and sprite collision. It helps to understand the technical requirements and limitations related to art assets. The course helps Technical Artists to better collaborate with programmers and artists in game development.
Data Scientist
Data Scientists analyze large datasets to extract meaningful insights and inform decision-making. While this course focuses on game development, the Python programming skills acquired are transferable to data science. The course teaches how to work with classes and inheritance. The experience creating games helps build strong technical experience. This course may be useful for those wishing to switch to data science.
Mobile Game Developer
Mobile Game Developers create games specifically for mobile devices, and this course may be useful by providing a foundation in game development principles and Python programming. While Pygame may not be the primary framework for mobile games, the underlying concepts of game loops, user input, and graphics rendering are transferable. The course's focus on object oriented programming and collision detection is applicable to mobile game development. This experience developing games helps a Mobile Game Developer understand the structure of games.
Web Developer
Web Developers build and maintain websites. This course may be useful by providing a foundation in computer programming. The course employs a step-by-step approach. By working through the games, the Web Developer can gain experience in software creation. The understanding of Python helps a Web Developer understand the fundamentals of programming. This course may lead to a new understanding of the web.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in The Art of Doing: Video Game Creation With Python and Pygame.
Provides a solid foundation in Python programming, covering essential concepts and syntax. It's particularly useful for beginners or those looking to refresh their Python skills before diving into game development. The project-based approach aligns well with the course's focus on building games, offering practical examples and exercises. It serves as a valuable reference throughout the course and beyond.
Explores common design patterns used in game development. While not specific to Pygame, it provides valuable insights into structuring game code effectively. It's more valuable as additional reading to deepen understanding of software design principles. This book is commonly used by industry professionals.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser