C++ Obejecte in Schleife erstellen



  • Hallo Leute ich programmiere gerade an einem Spiel welches natürlich eine Schleife hat die pro Frame einmal durchläuft 😉 Nun habe ich vor für folgende Level jeweils eine Klasse zu erstellen mit update, render, etc. Jedes Level beinhaltet natürlich viele Variablen, Grafiken,... und derzeit habe ich alle Objekte vor meiner Hauptschleife definiert und somit wird mein RAM- Speicher überfüllt von den Variablen aller Level obwohl ich nur die eines Levels benötige. Wie kann ich ein Object in meiner Game-while nur einmal erstellen (nur bei aufruf des Levels), und wieder aus dem RAM löschen nach dem "benutzen".

    Ich suche nach sowas wie #ifndef Objekt , dann definiere Objekt 😉

    Danke im voraus für eure hilfe 😉



  • Du brauchst eine Klasse Level, welche die Level-Objekte (Gegner, Wände, Schüsse) enthält

    class Level
    {
       list<LevelItem> items;
    }
    
    class LevelItem
    {
      virtual void Draw(DrawingArea area);
    }
    

    Mit dem NEW-Operator!!! legst du nun das Level an und löscht es am Ende (nachdem der Endgegner besiegt wurde)

    Level * level1 = new Level;
    
    //Je nachdem welches Level ausgewählt wurde, fügst du unterschiedliche Level-Objekte ein
    switch(levelNr)
    {
      case 1: level1.items.Add(new LevelItem()); break;
    }
    
    do
    {
      level1.items[0].Draw(..);
    }while(endgegner == true);
    
    //Hier wird das Level gelöscht. Nun könntest du wieder an den Anfang gehen und neue Objekte einfügen
    delete level1;
    

    Die LevelItems kannst du auch mit new anlegen und am Ende im Destruktur des Levels, also ~Level(){...} mit delete wieder löschen.


Log in to reply