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.
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.
Create game settings file
Include settings variables
Create BomberMan class
Create BomberMan Class - __init__ method
Create BomberMan Class - input method
Create BomberMan Class - update method
Create BomberMan Class - draw method
Create BomberMan Class - rungame method
If __name__=="__main__"
Create assets.py
Create Assets - __init__ method
Create Assets - load_sprite_sheet method
Instantiate Assets class in BomberMan class
Create game.py
Create Game class
Create Game - __init__ method
Create Game - input method
Create Game - update method
Create Game - draw method
Update Bomberman - init method
Update Bomberman - input method
Update Bomberman - update method
Update Bomberman - draw method
Create character.py file
Create Character class
Create Character - init method
Create Character - input method
Create Character - update method
Create Character - draw method
Update Game - init method
Update Game - input method
Update Game - update method
Update Game - draw method
Update Character - init method
Update Character - input method
Update Character - init method
Create Character - animate method
Create Character - move method
Update Character - input method
Create Game - generate_level_matrix method
Update - Gamesettings
Update Game - init method
Update Gamesettings
Update Assets - init method
Create Blocks Class - init method
Create Blocks - update method
Create Blocks - draw method
Create Blocks - repr method
Create Hard_Block - init method
Update Game - init method
Create Game - insert_hard_blocks_into_matrix method
Update Game - generate_level_matrix method
Update Game - update method
Update Game - draw method
Update gamesettings
Update Blocks - init method
Create Soft_Blocks - init method
Create Soft_Blocks - __repr__method
Update Game - init method
Create Game - insert_soft_blocks_into_matrix method
Update Game - update method
Update Game - draw method
Update Game - generate_level_matrix method
Update Game - draw method
Update Game - init method
Update Character - init method
Update Game - init method
Update Game - insert_hard_blocks_into_matrix
Update Game - insert_soft_blocks_into_matrix
Update Game - update method
Update Game - draw method
Update Character - move method
Create Character - collision_detection_items method
Update Character - move method
Update Character - move method
Create Character - snap to grid method
Update character - move method
Create Character - play_area_restriction method
Update Blocks - init method
Update Game - init method
Create Game - update_x_camera_offset_player_position method
Update Character - move method
Update Game - draw method
Update Blocks - draw method
Update Character - draw method
Update Game - init method
Update Gamesettings.py - sprite coordinates
Update assets - init method
Create Bomb Class
Create Bomb - init method
Create Bomb - update method
Create Bomb - draw method
Update Character - input method
Update Bomb - init method
Create Bomb - insert bomb into grid method
Update Bomb - init method
Create Bomb - repr method
Update Bomb - init method
Create Bomb - animation method
Update Bomb - Update method
Update Bomb - init method
Create Bomb - remove_bomb_from_grid method
Create Bomb - explode method
Update Bomb - update method
Create Bomb - planted_bomb_player_collision method
Update Character - init method
Update Character - input method
Update Bomb - init method
Update Bomb - update method
Update Character - input method
Update Character - init method
Update Character - input method
Update Enemy - init method
Update Enemy - update method
Create Enemy - movement method
Enemy - Import random
Update Enemy - Init method
Update Enemy - Movement method
Create Enemy - collision_detection_blocks
Create Enemy - new_direction method
Update Enemy - Movement method
Update Enemy - init Method
Update Enemy - movement method
Create Enemy - change_directions method
Create Enemy - determine_if_direction_valid method
Update Enemy - change_directions method
Update Enemy - new_directions method
Update Enemy - init method
Create Enemy - animate method
Update Enemy - update method
Create Enemy - destroy method
Update Game - update method
Create Game - insert_enemies_into_level method
Update Game - init method
Update Game - generate_level_matrix method
Update Enemy - init method
Create Enemy - update_line_of_sight_with_player method
Update Enemy - Draw method
Update gamesettings.py
Update Enemy - init method
Update Assets - init method
Update Game - insert_enemies_into_level method
Update gamesettings.py
Update Assets - init method
Update Game - insert_enemies_into_level method
Create Enemy - Chase_the_Player method
Create Enemy - Check_LoS_Distance method
Update Enemy - Movement method
Create Enemy - Intersecting_items_with_LoS method
Update Enemy - Movement Method
Update Gamesettings.py
Update Assets - init method
Update Game - insert_enemies_into_level method
Update Enemy - movement method
Update Enemy - change_directions method
Create Character - set_player_position method
Create Character - set_player_images method
Create Character - set_player method
Update Character - init method
Create Character - reset_player method
Create Character - deadly collisions method
Update Character - update method
Update Character - animate method
Create Game - regenerate_stage method
Update Character - reset_player method
Create Game - select_enemies_to_spawn method
Create Game - add_enemies_to_list method
Update Game - insert_enemies_into_level method
Update gamesettings.py
Update Assets - init method
Update Game - init method
Create Specials class
Create Specials - init method
Create Specials - update method
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"]
Create Special_Soft_Block Class
Create Special_Soft_Block - init method
Update Special_Soft_Block - kill method
Create Special_Soft_Block - place_special_block method
Update Game - init method
Create Game - Select_a_special method
Create Game - insert_power_up_into_matrix method
Update Special - update method
Create Special - bomb up special method
Create Special - fire up special method
Create Special - speed up special method
Create Special - wall hack special method
Create Special - remote special method
Create Special - bomb hack special method
Create Special - flame pass special method
Create Special - invincible special method
Update Special - init method
Update Special - update method
Double checking to make sure all of the power up abilities work.
Update Character - set_player method
Update Character - update method
Update Soft_Block - udpate method
Update Specials - init method
Create Specials - end_stage method
Update Specials - update method
Create Game - new stage method
Update Gamesettings
Create Specials - hit_by_explosion method
Update Game - insert_enemies_into_level method
Update Specials - hit_by_explosion method
Update Explosion - calculate_explosive_path method
Update gamesettings
Update Assets - init method
Create info_panel.py
Create InfoPanel Class
Create infoPanel - init method
Create InfoPanel - set_timer method
Create InfoPanel - update_time_image method
Create InfoPanel - update method
Create InfoPanel - draw method
Update Game - init method
Update Game - update method
Update Game - draw method
Update Game - Regenerate Stage method
Update InfoPanel - init method
Update InfoPanel - Draw method
Update InfoPanel - init method
Create InfoPanel - update_score_image method
update InfoPanel - draw method
Update gamesettings.py
Create Scoring Class
Create Scoring - init method
Create Scoring - update method
Create Scoring - draw method
Create Character - update_score method
Update Game - init method
Update Enemy - init method
Update Enemy - update enemy
Update Specials - init method
Update Specials - update method
Update Assets - init method
Update Game - init method
Update Game - update method
Update Game - draw method
Create Game - new_game method
Update Game - init method
Update Game - input method
Update Character - reset_player method
Update Gamesettings file
Update Assets - init method
Create LevelTransition class
Create LevelTransition - init method
Create LevelTransition - generate_stage_number_image method
Create LevelTransition - update method
Create LevelTransition - draw method
Update Game - init method
Update Game - new_game method
Update Game - update method
Update Game - draw method
Update Game - regenerate_stage method
Update gamesettings file
Create Assets - load_sound_effects method
Update Assets - init method
Update BomberMan - init method
Update Game - init method
Update Game - input method
Update Game - update method
Update Game - regenerate stage method
Update Gamesettings
Update Character - init method
Update Character - Move method
Update Character - Animate method
Update Character - deadly collisions method
Update Character - set player method
Update Game - regenerate stage method
Update Character - draw method
Update Bomb - init method
Update Explosion - init method
Update Character - set player method
Update Character - reset_player method
Update Game - init method
Create Game - check top score method
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!
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.
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.