Sie können eine einzelne öffentliche Methode in Ihrer Game
Klasse haben, die als Einstiegspunkt dient (z. B. eine aufgerufene Methode Run()
). Dann main()
müssten Sie nur noch diese Methode aufrufen, um alles zum Laufen zu bringen - nichts weiter.
Die Run()
Methode könnte beginnen, indem alle Subsysteme initialisiert werden und dann in die Hauptspielschleife eintreten. Es sollte auch dafür sorgen, dass alles ordnungsgemäß heruntergefahren wird, sobald die Schleife endet.
Alles andere in der Klasse kann privat bleiben (oder geschützt sein, wenn Sie ein konkretes Spiel erstellen möchten, indem Sie davon erben), da es nur von Ihrer Spielimplementierung benötigt wird.
Beispiel
Hinweis: Völlig nackte Knochen, keine Timing-Berechnungen, extrem vereinfachte Spielschleife, nur ein Beispiel für den Einstieg. Für ein tatsächliches Spiel sollte es wahrscheinlich viel komplexer sein als dieses:
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;
}
Und zu Ihrer main()
Methode:
int main()
{
Game game;
game.Run();
return 0;
}