Ich habe ein einfaches C++ und OpenGL-Spiel, in dem Spieler Ziele schießen. Ich möchte Spielern erlauben, das Spiel jederzeit neu zu starten, indem Sie "R" drücken, wodurch die Ziele, die Spielerposition usw. zurückgesetzt werden. Mein Spiel besteht hauptsächlich in der Hauptfunktion, die zuerst die Physik- und Mesh-Daten einrichtet Ich habe eine Do-While-Schleife, die die Ziele für jeden Frame zeichnet.Wie kann ein Spiel jederzeit neu gestartet werden?
Ich Capture derzeit mit GLFW, wenn der Benutzer Esc (in der Do-While-Schleife) trifft, damit ich das Fenster schließen kann, aber wie genau würde ich gehen, das Spiel neu zu starten?
Müsste ich die Variablen des Spiels, die Position des Spielers manuell neu setzen, die Ziele neu zeichnen usw. Oder gibt es eine Möglichkeit, einfach vor der Do-While-Spielschleife zu springen und neu zu beginnen?
Danke, und Entschuldigung, wenn das trivial ist.
EDIT: Im Moment habe ich so etwas wie diese:
main() {
initialise window;
get mesh vertices;
set textures;
initialise Bullet physics;
do {
ray picking;
render targets and walls;
} while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS &&
glfwWindowShouldClose(window) == 0);
}
Sound ist ziemlich breit. Stelle ein Event zur Verfügung, das dein Spiel aus der Hauptschleife wiederherstellt. –
Wenn Sie das Spiel mit einem Model-Command-View-System geschrieben haben, sollte das vorübergehende Löschen der Ansicht kein Problem sein. Wenn Sie Modell-, Befehls- und Ansichtscode wahllos gemischt haben, ist es vielleicht ein Problem, sie zu trennen, –