Você pode ter um único método público em sua Game
classe para servir como ponto de entrada (por exemplo, um método chamado Run()
). Então, a única coisa que você precisa fazer main()
para colocar tudo em funcionamento seria chamar esse método - nada mais.
O Run()
método pode começar inicializando todos os subsistemas e depois entrar no loop principal do jogo. Também deve cuidar de desligar tudo corretamente assim que o loop terminar.
Todo o resto da classe pode permanecer privado (ou protegido, se você preferir criar um jogo concreto herdando-o), porque ele só será necessário para a implementação do jogo.
Exemplo
Nota: ossos completamente nus, sem cálculos de tempo, loop de jogo extremamente simplista, apenas um exemplo para você começar. Para um jogo real, provavelmente deve ter muito mais complexidade do que isso:
class Game
{
public:
void Run()
{
Initialize();
while(_running)
Frame();
Shutdown();
}
private:
void Initialize() { /* Initialize subsystems */ }
void Shutdown() { /* Shutdown subsystems */ }
void Frame() { /* Update and draw game */ }
bool _running = true;
}
E no seu main()
método:
int main()
{
Game game;
game.Run();
return 0;
}