We may earn an affiliate commission when you visit our partners.
Harry Van Der Schyff

I have done so many of the regular projects out there, such as a tic tac toe, chess, hangman, asteroids, connect 4, but all of these projects felt small and I found there to not be much variety when it comes to game tutorials.

Most tutorials all cover the same games, with only variations in how they are coded. I also found that most tutorials, do not go through every element of a game, such as the start screen, all of the power ups, the score screens, etc.

Read more

I have done so many of the regular projects out there, such as a tic tac toe, chess, hangman, asteroids, connect 4, but all of these projects felt small and I found there to not be much variety when it comes to game tutorials.

Most tutorials all cover the same games, with only variations in how they are coded. I also found that most tutorials, do not go through every element of a game, such as the start screen, all of the power ups, the score screens, etc.

They usually only take you as far as the basic building blocks, and then leave you to create the rest, should you wish to continue.Most of these tutorials, have left me with a directory filled with what would be deemed as unfinished games.Hence I thought it would be great to put together a course on creating a game, with all of the game elements created and implemented in a step by step process, that leaves you at the end of the course, with a fully functional, and complete game.

My hope is that you are able to understand how each element of this game is created and implemented, so that you gain further insight when deciding to tackle a challenge of your own.

I also find the old games from the 80's and 90's as fantastic coding challenges, in particular when it comes to trying to understand how something may have been implemented.

Enroll now

What's inside

Learning objectives

  • Expand your understanding and use of variables, lists, dictionaries, for loops and while loops.
  • Expand your understanding and use of object oriented programming
  • Conceptualize programming challenges and discover solutions and methods for implementing these solutions to those challenges
  • Progress your python learning beyond learning the basics to a more advanced beginner project, gain confidence in tackling bigger projects.
  • Work on importing various modules into your program, as well as importing data between various python files
  • Sharing and updating data between the various objects within your program, updating the different objects when required, also updating the game stage
  • Implementing various solutions to typical game development challenges, such as collision detection, animations, power-ups etc.
  • Creating a start screen, a menu screen, a game screen, a level editor screen, allowing for user level development.
  • Show more
  • Show less

Syllabus

Introduction
  1. Create game settings file

  2. Include settings variables

  3. Create BomberMan class

  4. Create BomberMan Class - __init__ method

  5. Create BomberMan Class - input method

  6. Create BomberMan Class - update method

  7. Create BomberMan Class - draw method

  8. Create BomberMan Class - rungame method

  9. If __name__=="__main__"

Read more
  1. Create assets.py

  2. Create Assets - __init__ method

  3. Create Assets - load_sprite_sheet method

  4. Instantiate Assets class in BomberMan class

  1. Create game.py

  2. Create Game class

  3. Create Game - __init__ method

  4. Create Game - input method

  5. Create Game - update method

  6. Create Game - draw method

  7. Update Bomberman - init method

  8. Update Bomberman - input method

  9. Update Bomberman - update method

  10. Update Bomberman - draw method

Learn about Class Inheritance, Movement mechanics, Sprite extractions, and animating images.
  1. Create character.py file

  2. Create Character class

  3. Create Character - init method

  4. Create Character - input method

  5. Create Character - update method

  6. Create Character - draw method

  7. Update Game - init method

  8. Update Game - input method

  9. Update Game - update method

  10. Update Game - draw method

  1. Update Character - init method

  2. Update Character - input method

Getting the Player Images
  1. Update Character - init method

  2. Create Character - animate method

  3. Create Character - move method

  4. Update Character - input method

Working with matrixes, converting between Rows/Cols and X/Y coordinates, creating classes, using class inheritance, working with pygame Groups,, refactoring.
  1. Create Game - generate_level_matrix method

  2. Update - Gamesettings

  3. Update Game - init method

  1. Update Gamesettings

  2. Update Assets - init method

  3. Create Blocks Class - init method

  4. Create Blocks - update method

  5. Create Blocks - draw method

  6. Create Blocks - repr method

  7. Create Hard_Block - init method

  8. Update Game - init method

  9. Create Game - insert_hard_blocks_into_matrix method

  10. Update Game - generate_level_matrix method

  11. Update Game - update method

  12. Update Game - draw method

  1. Update gamesettings

  2. Update Blocks - init method

  3. Create Soft_Blocks - init method

  4. Create Soft_Blocks - __repr__method

  5. Update Game - init method

  6. Create Game - insert_soft_blocks_into_matrix method

  7. Update Game - update method

  8. Update Game - draw method

  9. Update Game - generate_level_matrix method

  1. Update Game - draw method

  2. Update Game - init method

  3. Update Character - init method

  4. Update Game - init method

  5. Update Game - insert_hard_blocks_into_matrix

  6. Update Game - insert_soft_blocks_into_matrix

  7. Update Game - update method

  8. Update Game - draw method

Pygame collision detections, working with rectangles, moving the camera.
  1. Update Character - move method

  2. Create Character - collision_detection_items method

  3. Update Character - move method

  1. Update Character - move method

  2. Create Character - snap to grid method

  3. Update character - move method

  4. Create Character - play_area_restriction method

  5. Update Blocks - init method

  1. Update Game - init method

  2. Create Game - update_x_camera_offset_player_position method

  3. Update Character - move method

  4. Update Game - draw method

  5. Update Blocks - draw method

  6. Update Character - draw method

In this section, we will create the bombs, animate them, set them up to explode, animate the explosions, and then do hit detection on the explosions.
  1. Update Game - init method

  2. Update Gamesettings.py - sprite coordinates

  3. Update assets - init method

  4. Create Bomb Class

  5. Create Bomb - init method

  6. Create Bomb - update method

  7. Create Bomb - draw method

  8. Update Character - input method

  1. Update Bomb - init method

  2. Create Bomb - insert bomb into grid method

  3. Update Bomb - init method

  4. Create Bomb - repr method

  5. Update Bomb - init method

  6. Create Bomb - animation method

  7. Update Bomb - Update method

  1. Update Bomb - init method

  2. Create Bomb - remove_bomb_from_grid method

  3. Create Bomb - explode method

  4. Update Bomb - update method

  5. Create Bomb - planted_bomb_player_collision method

  1. Update Character - init method

  2. Update Character - input method

  3. Update Bomb - init method

  4. Update Bomb - update method

  5. Update Character - input method

  6. Update Character - init method

  7. Update Character - input method

In this section, we will generate the explosions, as well as calculate the fireball paths that the explosions can take, affecting all of the surrounding cells as required.
The Explosions
Creating and Animating the Explosion
Calculating the Flame Path 1
Calculating the Flame Path 2
Calculating the Flame Path 3
Creating the Fireball Element
Destroying the Soft Blocks in Game
In this section, we will put together the enemy classes, creating the enemies, enemy movements, enemy animations, enemy death sequences, as well as enemy "ai"
Creating the First Enemy - Ballom
  1. Update Enemy - init method

  2. Update Enemy - update method

  3. Create Enemy - movement method

  1. Enemy - Import random

  2. Update Enemy - Init method

  3. Update Enemy - Movement method

  4. Create Enemy - collision_detection_blocks

  5. Create Enemy - new_direction method

  6. Update Enemy - Movement method

  1. Update Enemy - init Method

  2. Update Enemy - movement method

  3. Create Enemy - change_directions method

  4. Create Enemy - determine_if_direction_valid method

  5. Update Enemy - change_directions method

  6. Update Enemy - new_directions method

  1. Update Enemy - init method

  2. Create Enemy - animate method

  3. Update Enemy - update method

  4. Create Enemy - destroy method

  5. Update Game - update method

  1. Create Game - insert_enemies_into_level method

  2. Update Game - init method

  3. Update Game - generate_level_matrix method

IN this section we are going to create the more advanced enemies, where some have abilities such as tracking the player and moving towards him when there is no obstructions in the way.
  1. Update Enemy - init method

  2. Create Enemy - update_line_of_sight_with_player method

  3. Update Enemy - Draw method

  1. Update gamesettings.py

  2. Update Enemy - init method

  3. Update Assets - init method

  4. Update Game - insert_enemies_into_level method

  5. Update gamesettings.py

  6. Update Assets - init method

  7. Update Game - insert_enemies_into_level method

  1. Create Enemy - Chase_the_Player method

  2. Create Enemy - Check_LoS_Distance method

  3. Update Enemy - Movement method

  4. Create Enemy - Intersecting_items_with_LoS method

  5. Update Enemy - Movement Method

  1. Update Gamesettings.py

  2. Update Assets - init method

  3. Update Game - insert_enemies_into_level method

  4. Update Enemy - movement method

  5. Update Enemy - change_directions method

  1. Create Character - set_player_position method

  2. Create Character - set_player_images method

  3. Create Character - set_player method

  4. Update Character - init method

  5. Create Character - reset_player method

  6. Create Character - deadly collisions method

  7. Update Character - update method

  8. Update Character - animate method

  1. Create Game - regenerate_stage method

  2. Update Character - reset_player method

  3. Create Game - select_enemies_to_spawn method

  4. Create Game - add_enemies_to_list method

  5. Update Game - insert_enemies_into_level method

Implementing Power Up Abilities to the player character
  1. Update gamesettings.py

  2. Update Assets - init method

  3. Update Game - init method

  4. Create Specials class

  5. Create Specials - init method

  6. Create Specials - update method

  7. Create Specials - draw method

Loadshedding at the end of this video. The error that pops up, line 158 in the game.py file:

self.ASSETS.soft_block["soft_block"]


  1. Create Special_Soft_Block Class

  2. Create Special_Soft_Block - init method

  3. Update Special_Soft_Block - kill method

  4. Create Special_Soft_Block - place_special_block method

  5. Update Game - init method

  6. Create Game - Select_a_special method

  7. Create Game - insert_power_up_into_matrix method

  1. Update Special - update method

  2. Create Special - bomb up special method

  3. Create Special - fire up special method

  4. Create Special - speed up special method

  5. Create Special - wall hack special method

  6. Create Special - remote special method

  7. Create Special - bomb hack special method

  8. Create Special - flame pass special method

  9. Create Special - invincible special method

  10. Update Special - init method

  11. Update Special - update method

Double checking to make sure all of the power up abilities work.

  1. Update Character - set_player method

  2. Update Character - update method

  3. Update Soft_Block - udpate method

  1. Update Specials - init method

  2. Create Specials - end_stage method

  3. Update Specials - update method

  4. Create Game - new stage method

  1. Update Gamesettings

  2. Create Specials - hit_by_explosion method

  3. Update Game - insert_enemies_into_level method

  4. Update Specials - hit_by_explosion method

  5. Update Explosion - calculate_explosive_path method

Creating, and Updating the Game HUD or Heads Up Display, with information and updating images.
  1. Update gamesettings

  2. Update Assets - init method

  1. Create info_panel.py

  2. Create InfoPanel Class

  3. Create infoPanel - init method

  4. Create InfoPanel - set_timer method

  5. Create InfoPanel - update_time_image method

  6. Create InfoPanel - update method

  7. Create InfoPanel - draw method

  8. Update Game - init method

  9. Update Game - update method

  10. Update Game - draw method

  1. Update Game - Regenerate Stage method

  2. Update InfoPanel - init method

  3. Update InfoPanel - Draw method

  4. Update InfoPanel - init method

  5. Create InfoPanel - update_score_image method

  6. update InfoPanel - draw method

  1. Update gamesettings.py

  2. Create Scoring Class

  3. Create Scoring - init method

  4. Create Scoring - update method

  5. Create Scoring - draw method

  6. Create Character - update_score method

  7. Update Game - init method

  8. Update Enemy - init method

  9. Update Enemy - update enemy

  10. Update Specials - init method

  11. Update Specials - update method

In this Section, we will implement a start screen, but more importantly the transition screens, which switch the game between the different phases. We will also be implementing the sound and music.
  1. Update Assets - init method

  2. Update Game - init method

  3. Update Game - update method

  4. Update Game - draw method

  5. Create Game - new_game method

  6. Update Game - init method

  7. Update Game - input method

  8. Update Character - reset_player method

  1. Update Gamesettings file

  2. Update Assets - init method

  3. Create LevelTransition class

  4. Create LevelTransition - init method

  5. Create LevelTransition - generate_stage_number_image method

  6. Create LevelTransition - update method

  7. Create LevelTransition - draw method

  8. Update Game - init method

  9. Update Game - new_game method

  10. Update Game - update method

  11. Update Game - draw method

  12. Update Game - regenerate_stage method

  1. Update gamesettings file

  2. Create Assets - load_sound_effects method

  3. Update Assets - init method

  4. Update BomberMan - init method

  5. Update Game - init method

  6. Update Game - input method

  7. Update Game - update method

  8. Update Game - regenerate stage method

  1. Update Gamesettings

  2. Update Character - init method

  3. Update Character - Move method

  4. Update Character - Animate method

  5. Update Character - deadly collisions method

  6. Update Character - set player method

  7. Update Game - regenerate stage method

  1. Update Character - draw method

  2. Update Bomb - init method

  3. Update Explosion - init method

  4. Update Character - set player method

  5. Update Character - reset_player method

  6. Update Game - init method

  7. Create Game - check top score method

  8. Create Game - top score method

I truly apologise, I overlooked going into the enemy.py file, and within the enemy class, in the draw method...

remove or comment out the pygame.draw.line. That will remove the black lines between the enemies and the player


Thank you for following along!

Save this course

Save Game Dev: BomberMan with Python, Pygame and Oop! to your list so you can find it easily later:
Save

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 Game Dev: BomberMan with Python, Pygame and Oop! with these activities:
Review Pygame Basics
Reinforce your understanding of Pygame fundamentals, including sprite handling, event loops, and drawing functions, to better grasp the course's implementation of these concepts.
Browse courses on PyGame
Show steps
  • Read the Pygame documentation.
  • Work through a basic Pygame tutorial.
  • Experiment with simple Pygame programs.
Brush Up on Object-Oriented Programming (OOP)
Strengthen your understanding of OOP principles, as the course heavily relies on classes and objects to structure the game logic.
Show steps
  • Review OOP concepts like classes, objects, inheritance, and polymorphism.
  • Practice creating and using classes in Python.
  • Study OOP design patterns.
Read 'Python Crash Course'
Solidify your Python fundamentals with a comprehensive guide that covers the language's core features and syntax.
Show steps
  • Read the chapters covering basic Python syntax and data structures.
  • Complete the exercises at the end of each chapter.
  • Focus on the sections related to lists, dictionaries, and functions.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement Basic Game Mechanics
Practice implementing core game mechanics like movement, collision detection, and basic AI to reinforce the concepts taught in the course.
Show steps
  • Create a simple Pygame project with a player character.
  • Implement movement controls for the player.
  • Add collision detection between the player and obstacles.
  • Implement basic AI for an enemy character.
Document Your Code
Improve your understanding of the codebase by writing clear and concise documentation for each class and function.
Show steps
  • Add comments to explain the purpose of each code block.
  • Write docstrings for all classes and functions.
  • Use a documentation generator to create HTML documentation.
Contribute to a Pygame Project
Deepen your understanding of game development by contributing to an existing open-source Pygame project.
Show steps
  • Find an open-source Pygame project on GitHub.
  • Read the project's documentation and code.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.
Create a Level Editor
Extend the course project by creating a level editor that allows users to design and create their own BomberMan levels.
Show steps
  • Design the user interface for the level editor.
  • Implement the functionality to create and edit levels.
  • Add the ability to save and load levels.
  • Integrate the level editor with the main game.

Career center

Learners who complete Game Dev: BomberMan with Python, Pygame and Oop! will develop knowledge and skills that may be useful to these careers:
Game Developer
A game developer is responsible for designing, coding, and debugging video games. This role involves creating engaging gameplay mechanics, implementing game logic, and optimizing performance. Creating a complete game, as covered in this course, directly translates into the skills needed in this position. Through this course, one can understand how each element of the game is created and implemented. The knowledge of collision detection, animations, and power-ups developed through this course, are valuable skills for a aspiring game developer.
Multimedia Programmer
Multimedia programmers create interactive applications that incorporate images, sound, video, and animations. They often work on video games, simulations, and training software. Through this course, they can learn how to implement various solutions to typical game development challenges, such as collision detection and animations. The process of creating a full game, as covered by the course, gives one the experience needed to advance in a multimedia programmer role.
Python Developer
A Python developer specializes in using the Python programming language to build various applications, including web applications, data analysis tools, and games. Creating a game using object oriented programming using Python, as described in this course, is a great means of learning to become a Python developer. This course helps you to learn how to import various modules into your program, as well as importing data between various Python files. Those interested in working with Python would find this course useful.
Level Designer
A level designer is responsible for creating engaging and challenging environments within a video game. Developing games and understanding the elements that make up a stage are key for this role. This course is helpful as it allows one to create a level editor screen, which allows for user level development. If level design is your passion, then this course may be the perfect primer for you.
Software Engineer
Software engineers are involved in the development, testing, and maintenance of software systems. This often requires expertise in object oriented programming and logic. The course progresses python learning beyond the basics to a more advanced beginner project, and gaining confidence in tackling bigger projects. If you are someone who is interested in the field of software engineering, this course would be a good primer. This course may be useful in helping you to expand your understanding and use of variables, lists, dictionaries, for loops and while loops.
Software Developer
Software developers are involved in the entire software development lifecycle, from requirements gathering to deployment and maintenance. They may be responsible for coding, testing, debugging, and documenting software. If you are a software developer, you may find this course useful as it allows you to gain confidence in tackling bigger projects. This course is also helpful as it shows one how to implement various solutions to typical game development challenges. The end-to-end process of developing a game may mirror the software development lifecycle.
Mobile Game Developer
Mobile game developers adapt or create new games for mobile platforms such as iOS and Android. The role often requires a blend of creativity, programming, and design skills. This course directly relates to the skill set needed for this role. One who takes this course will work on implementing various solutions to typical game development challenges, such as collision detection, animations, and power ups. If game development and mobile platforms are your passion, then this career will allow you to make it your occupation.
UI Programmer
A user interface programmer focuses on the technical implementation of user interfaces for software applications and video games. This role requires strong coding skills and a deep understanding of user experience principles. In this course, you will work on creating a Start Screen, a Menu Screen, and a Game Screen. If you are interested in making games more user friendly, then becoming a user interface programmer may be right up your alley.
Game Designer
A game designer creates the overall vision and mechanics of a video game. Creating a good game takes collaboration and innovative thinking. This person often works with a team to develop specific elements of a game. As this program goes through every element of a game, such as the start screen, all of the power ups, the score screens, this can be useful for a role in game design. If you have a passion for gaming, then a role as a game designer may be right for you.
Application Developer
Application developers design, develop, and implement software applications. They work closely with clients or stakeholders to understand their needs and translate them into functional software. This course may be useful to application developers as it provides the ability to create a Start Screen, Menu Screen, Game Screen, and a Level Editor screen, which allows for user level development. Application developers who wish to expand their repertoire of skills may find this course quite handy.
Simulation Developer
Simulation developers create software models of real-world systems or processes. These simulations are used for training, research, and analysis in various fields. As this course involves conceptualizing programming challenges and discovering solutions and methods for implementing these solutions to those challenges, this can be useful to those aspiring to be simulation developers. This course may be useful for those interested in applying the skills and knowledge to simulate complex systems.
Graphics Programmer
Graphics programmers specialize in developing and optimizing the visual aspects of software applications, including video games. The role requires an understanding of rendering pipelines, shaders, and 3D graphics principles. Graphics programmers may find this course useful as they can learn how to implement various solutions to typical game development challenges, such as creating animations. Creating animations is also quite helpful in this position.
Web Developer
Web developers build and maintain websites and web applications. They use a variety of programming languages, frameworks, and tools to create functional and user-friendly web experiences. With this course, you can expand your understanding and use of variables, lists, and dictionaries, which are extremely helpful to web developers. In this course, you will also work on importing various modules into your program, as well as importing data between various Python files.
Software Quality Assurance Engineer
Software quality assurance engineers ensure software products meet quality standards through testing and analysis. This role involves identifying defects, writing test cases, and working with developers to resolve issues. This course may be useful to software quality assurance engineers as they learn how to use object oriented programming. This course may also be helpful in expanding one's understanding and use of variables, lists, dictionaries, for loops and while loops.
Project Manager
Project managers plan, organize, and oversee the completion of specific projects, ensuring they are on time, on budget, and within scope. A project manager collaborates closely with stakeholders and team members. This course expands your understanding and use of object oriented programming, and also conceptualizing programming challenges and discovering solutions and methods for implementing these solutions to those challenges. Therefore, this course may be helpful to project managers.

Reading list

We've selected one 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 Game Dev: BomberMan with Python, Pygame and Oop!.
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 helps solidify understanding through practical application. While not specifically focused on game development, it provides the necessary Python knowledge to succeed in the course.

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