#include "stdafx.h" #include "SDLEntity.h" #include "SDLApplication.h" #include "SDLSound.h" #include "SDLTimer.h" #include "SDLTyper.h" #include "GameScore.h" int main(int argc, char* argv[]) { try{ SDL_Application *g_Application = new SDL_Application(); SDLSound *g_Sound = new SDLSound(); SDLEntity *g_Entity = new SDLEntity(); SDL_Timer *g_Timer = new SDL_Timer(); SDLTyper *g_Typer = new SDLTyper(); GScore *g_Score = new GScore(); if(g_Application->Init() || g_Sound->Init() || g_Typer->Init()) { throw g_Application->InvalidPath; } g_Typer->Init(); g_Typer->OpenFont(FONT); g_Application->SetCaption(WINNAME); g_Application->InitBackground(BACKGROUND); g_Application->DrawBackground(); g_Sound->InitBGSound(BGSOUND); g_Sound->EmitBGSound(); g_Sound->InitActionSound(g_Sound->GoodShoot, SHOOT); g_Entity->InitSurface(ENTITY); g_Entity->Move(g_Application->GetScreenSurface(), 0, 0); g_Timer->Set(1000); while(g_Application->m_isGameRunning) { g_Application->CheckForGameExit(); if(g_Application->HandleMouseInput(g_Entity->GetRect()) || !g_Timer->IsTimerRun()) { g_Application->DrawBackground(); g_Entity->Move(g_Application->GetScreenSurface(), rand() % (g_Application->Width - g_Entity->GetRect()->w), rand() % (g_Application->Heigth - g_Entity->GetRect()->h)); if(g_Timer->IsTimerRun()) { g_Sound->EmitActionSound(g_Sound->GoodShoot); g_Typer->DisplayText(g_Application->GetScreenSurface(), 0, "Nice Shoot!"); g_Score->Add(); } else { g_Score->Sub(); g_Typer->DisplayText(g_Application->GetScreenSurface(), 0, "Fail!"); } g_Timer->Set(rand() % (1000 - 500) + 500); } g_Typer->DisplayText(g_Application->GetScreenSurface(), 620, g_Score->ToString().c_str()); g_Timer->Update(); g_Application->UpdateWindow(); } delete g_Score; delete g_Typer; delete g_Sound; delete g_Application; delete g_Entity; delete g_Timer; } catch(unsigned exeption) { char* ErrorMessage = nullptr; switch(exeption) { case SDL_Application::InvalidPath: { ErrorMessage = "Invalid path."; break; } case SDL_Application::InvalidEntityId: { ErrorMessage = "Invalid entity id."; break; } case SDL_Application::InvalidSound: { ErrorMessage = "Invalid sound."; break; } } MessageBoxA(nullptr, (std::string("Game was aborted with error: ") + ErrorMessage).c_str() , nullptr, MB_OK); } return 0; }