Spielschleife



  • Hallo,

    ich möchte, dass mein Programm im Hintergrund arbeitet, wenn gerade keine Nachrichten anliegen. Dafür habe ich folgende Schleife geschrieben (also nicht exakt diese, aber das Problem wird daran deutlich):

    do
    {
      if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
      {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
      }
      else
        if(zeit < GetTickCount())
        {
          zeit = GetTickCount() + 500;
          MessageBeep(MB_OK);
        }
    }
    while(msg.message != WM_QUIT);
    

    Jetzt mein Problem: Das Programm hat ein Hauptmenü (Datei Bearbeiten Extras..).
    Wenn der Benutzer dieses Menü öffnet, stoppt die Schleife, es wird nicht weitergerechnet. 😞

    Was kann ich tun?



  • Ich versteh net, was Ihr immer mit euren Spieleschleifen wollt! Ihr denkt sicherlich: "Oh toll, da kann ich mir die komplizierten Threads sparen!"
    Aber falsch, wenn man sich Threads sparen könnte, gäbe es sie schliesslich net!

    Das mit Deinem Menü liegt daran, dass beim Aufklappen Deine MessageQueue durch eine neue ersetzt wird!
    Es wird Dir also nix übrig bleiben, als Threads zu nutzen



  • Original erstellt von RenéG:
    **Ich versteh net, was Ihr immer mit euren Spieleschleifen wollt! Ihr denkt sicherlich: "Oh toll, da kann ich mir die komplizierten Threads sparen!"
    Aber falsch, wenn man sich Threads sparen könnte, gäbe es sie schliesslich net!

    Das mit Deinem Menü liegt daran, dass beim Aufklappen Deine MessageQueue durch eine neue ersetzt wird!
    Es wird Dir also nix übrig bleiben, als Threads zu nutzen**

    Benutzt du unter DirectX und Opengl einen Thread für deine Spielschleife?



  • Ja, ich geb's zu, ich wollte mir 'nen Thread sparen 🙄... War wohl nix.



  • @KPC
    Nöö, aber für die KI


Anmelden zum Antworten