Prozedur in Variable speichern
Verfasst: 02.12.2020 15:53
Hallo!
Ich programmiere in ein kleines 2D-Spiel. Obwohl das Menü recht übersichtlich ist (Hauptmenü, Spieleinstellungen, Tastenbelegung) kommen da sehr schnell sehr viele If-Befehle bzw. Select-Case-Befehle zusammen. Was das Ganze so aufbläht, ist, dass jeder Menü-Punkt, wenn er vom Spieler ausgewählt wird, eine andere Prozedur aufruft: Der Menüpunkt »New Game« startet ein neues Spiel, »Quit« beendet es usw.
Also frage ich mich, wie ich das vereinfachen und übersichtlicher gestalten kann. Die einfachste Lösung wäre, wenn man die Prozedur, die aufgerufen werden soll, wenn der Spieler einen Menüpunkt auswählt, in eine Variable speichern könnte. Ich habe mit Pointern herumexperimentiert, bin aber zu nichts gekommen.
Hier ein Beispiel, was ich mir vorstelle:
Ich hoffe, es ist verständlich, was ich meine. Die Prozeduren sollen nicht ausgeführt werden, wenn die Listenelemente angelegt werden, sondern erst ganz am Schluss.
Tut mir leid, wenn das eine total doofe Frage ist. Trotzdem schon mal vielen Dank; das Forum war bisher sehr hilfreich!
Ich programmiere in ein kleines 2D-Spiel. Obwohl das Menü recht übersichtlich ist (Hauptmenü, Spieleinstellungen, Tastenbelegung) kommen da sehr schnell sehr viele If-Befehle bzw. Select-Case-Befehle zusammen. Was das Ganze so aufbläht, ist, dass jeder Menü-Punkt, wenn er vom Spieler ausgewählt wird, eine andere Prozedur aufruft: Der Menüpunkt »New Game« startet ein neues Spiel, »Quit« beendet es usw.
Also frage ich mich, wie ich das vereinfachen und übersichtlicher gestalten kann. Die einfachste Lösung wäre, wenn man die Prozedur, die aufgerufen werden soll, wenn der Spieler einen Menüpunkt auswählt, in eine Variable speichern könnte. Ich habe mit Pointern herumexperimentiert, bin aber zu nichts gekommen.
Hier ein Beispiel, was ich mir vorstelle:
Code: Alles auswählen
AddElement(MainMenu\MenuItems())
MainMenu\MenuItems()\Text = "New Game"
MainMenu\MenuItems()\Procedure = @LoadLevel()
AddElement(MainMenu\MenuItems())
MainMenu\MenuItems()\Text = "Settings"
MainMenu\MenuItems()\Procedure = @SettingsMenu()
AddElement(MainMenu\MenuItems())
MainMenu\MenuItems()\Text = "Quit"
MainMenu\MenuItems()\Procedure = @DoYouReallyWantToQuit()
...
SelectElement(MainMenu\MenuItems(), varInt_SelectedItem)
*Führe aus* MainMenu\MenuItems()\Procedure
Tut mir leid, wenn das eine total doofe Frage ist. Trotzdem schon mal vielen Dank; das Forum war bisher sehr hilfreich!