Skip to content

GottaWorkM8/Missile-Command

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Missile-Command

Classic game with redesigned graphics that retain most of the original gameplay mechanics. Players defend a city from incoming bombs using a limited supply of ammunition. The game provides a fresh visual experience while preserving the core essence of the classic game.

image Game menu

The menu options are as follows:
"Continue" starts the game from the highest ever reached level,
"New Game" starts a fresh game, from the very first level,
"Help" provides information about game objects,
"Exit" allows you to leave the game.

351693105_143223785394990_5016415596778798039_n Level introduction

351757141_1429427944576513_6104141163336765603_n Gameplay

Gameplay is based around shooting fast missiles at incoming bombs that create explosions damaging bombs. Bombs can be destroyed creating explosions and potentially damaging other bombs. It is important to note that explosions are harmful to the city's infrastructure. If any structure on the surface gets destroyed player has his points cut by a significant amount, which can make winning the game difficult. Even if no structure gets damaged player still gains minus points for letting any bomb hit the ground. Destroying bombs in the air awards positive points.

351963711_275261985157038_6617687931602139723_n Paused game

It is possible to pause the game at any time (after initial introduction) by pressing Esc key. Resuming the game is also done by pressing the same key. From the pause menu there is an option to go back to the menu (left button), replay the level from the beginning (middle button) or go to the next level, if it has been unlocked in the past by beating the current level (right button).

Threads used in the whole application:
std::thread gameThread = std::thread(Game::Run, diff); - Handles the game loop
std::thread thread = std::thread(AnimateButton, std::ref(topLeft), std::ref(hovered)); - Animates the button upon hovering
std::thread missilesThread(HandleMissiles); - Handles missiles
std::thread explosionsThread(HandleExplosions); - Handles explosions
std::thread bombsThread(HandleBombs); - Handles bombs
std::thread flashesThread(HandleFlashes); - Handles flashes after every missile shot
std::thread destructionsThread(HandleDestructions); - Handles destructions (structure collapse)
std::thread thread = std::thread(&Intro::AnimateIntro, this); - Animates the introduction at the start of every level
std::thread soundThread(filepath() {PlaySoundA(filepath.c_str(), NULL, SND_FILENAME | SND_ASYNC);}); - Handles playing of the audio file
std::thread waitingThread = std::thread(WaitForReady); - Waits for the value change

Mutexes:
std::mutex launcherMutex; - Locks the launcher object
std::mutex buildingsMutex; - Locks the list of buildings
std::mutex missilesMutex; - Locks the list of missiles
std::mutex bombsMutex; - Locks the list of bombs
std::mutex explosionsMutex; - Locks the list of explosions
std::mutex destructionsMutex; - Locks the list of destructions (structure collapse)
std::mutex flashesMutex; - Locks the list of flashes after every missile shot

About

Classic game with a fresh coat of paint

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •