Seite 1 von 1

2 Procedures als Hauptcode!

Verfasst: 02.12.2006 19:22
von D4uS1
Folgendes Problem. Der Code des Spiels was ich programieren möchte hat mittlerweile ca 900 Zeilen. Diesen hier zu zeigen wäre also schwachsinnig. Deshalb versuche ich es in Worten auszudrücken. Ich habe 2 Proceduren. Einmal das Menü, und einmal das Spiel. Wenn ein Spiel gestartet wird beendet sich das Menü und das Spiel startet, soweit ist alles klar. Wenn man im Spiel ist soll beim drücken von Esc das Menü wieder aktiv werden. Das kapiert der PC auch noch. Aber wenn das der Fall war und ich möchte das Spiel fortsetzen oder neu starten, dann beendet der das gesamte Programm und sieht die Programmausführung als abgeschlossen.

Im Code sieht das Grob so aus:

Code: Alles auswählen

If Menu = 1
Spiel = 0
Menu()
EndIf
If Spiel = 1
Menu = 0
Spiel()
EndIf
Was ist daran falsch das der beim fortsetzen oder neustarten des Spiel beendet. Danke im voraus.

Verfasst: 02.12.2006 19:33
von mk-soft
Variable Spiel und Menu Global?

Wird im Menu() die Variable Spiel wieder auf 1 gesetzt?
Ein fortsetzen ist so nicht möglich da die Procedure ja neu gestartet wird.
Bei beenden der Procedure werden alle Variablen die in der Procedure angelegt werden (ausser Static) wieder freigeräumt.

Vielleicht mit Threads arbeiten.

FF :wink:

Verfasst: 02.12.2006 19:40
von Kaeru Gaman
nuja, es liegt vielleicht daran, dass du keinen rücksprung drin hast.
normalerweise hat man ne hauptschleife, die nur bei nem echten exit verlassen wird.

so in dem tenor:

Code: Alles auswählen

Repeat
  ExamineMouse()
  ExamineKeyboard()
  Select Status
    Case Intro
      NextIntroFrame()
      If KeyboardPushed(#PB_Key_Space) Or KeyboardPushed(#PB_Key_Escape) Or MouseButton(1)
        Status = Menu
      EndIf
    Case Menu
      DisplayMenu()
      Select MenuButton
        Case Game
          Status = Game
        Case Exit
          EXIT = 1
      EndSelect
    Case Game
      NextGameFrame()
      If BackToMenu()
        Status = Menu
      EndIf
  EndSelect
Until EXIT = 1
das ganze soll nur mal den grundgedanken zeigen.
und außerdem ist alles eine frage des stils, andere progger strukturieren sowas anders,
man kann auch drei getrennte mainloops für intro, menu und game machen.....
is im endeffekt banane...

wenn du getrennte abschnitte hast, musst du dafür sorgen,
dass das proggi ZURÜCKSPRINGT zu dem Menu-Abschnitt,
wenn du den Game-Abschnitt beendest.
das ist der Kernpunkt, egal wie du das löst.

Verfasst: 03.12.2006 12:51
von D4uS1
Ok danke, ich hab das Problem dann jetzt anders gelöst und hab anstelle der Proceduren alles unter eine Schleife gepackt und Variablen nach dem Thema benannt.

Code: Alles auswählen


 Menu = 1

Repeat
ExamineKeyboard()

If Menu = 1

  Spiel = 0

  BlaBlaBla
  BildBildBild
  AblaufAblauf
  usw

 If Keyboardpushed(1)
  Spiel = 1
 endif

endif


If Spiel = 1

  Menu = 0


  BlaBlaBla
  BildBildBild
  AblaufAblauf
  usw.

 If Keyboardpushed(1)
  Menu  = 1
 endif

endif

Until Beenden = 1