Objekte in Vector schreiben und gleichzeitig löschen



  • Nexus schrieb:

    D.h. Du solltest beschreiben, wofür Du diese Gleichzeitigkeit brauchst oder: Welches Problem willst Du mit der Gleichzeitigkeit von push_back + Löschen lösen? (das hast Du uns nicht verraten oder es wurde nicht ersichtlich)

    Solange du nicht imstande bist, seine Frage vernünftig zu beantworten, hat das hier keinen Sinn...

    Ich brauche diese "Gleichzeitigkeit" damit die "alten" Partikel auch während ich "neue " hinzufüge, gelöscht werden.



  • MFK schrieb:

    Und wo wird _LifeTime runtergezählt?

    if(_Timer.getElapsedTime().asMilliseconds() >= 100)
            {
                _Timer.restart();
    
                for(unsigned int o = 0; o < _AllParticle.size(); ++o)
                {
                    static float value = _AllParticle[o]._LifeTime/2.f;
    
                    _AllParticle[o]._LifeTime -= 0.1f;
    
                    if(_AllParticle[o]._LifeTime  <= value)
                    {
    
                        _AllParticle[o]._Alpha -= _AllParticle[o]._Alpha / _AllParticle[o]._LifeTime;
                        _AllParticle[o]._Sprite.setColor(sf::Color(255,255,255, _AllParticle[o]._Alpha));
    
                    }
                }
    
            }
    

    Läuft auch in der main.



  • Und Dein letzter Post... sorry, aber "wo" wird nicht mit Code beantwortet, von dem unklar ist, in welcher Funktion oder Methode der steht.

    Ich brauche diese "Gleichzeitigkeit" damit die "alten" Partikel auch während ich "neue " hinzufüge, gelöscht werden.

    Du hast es umformuliert, nicht erklärt, wofür Du das brauchst. Warum musst Du unbedingt neue hinzufügen, während Du etwas löscht?

    Irgendjemand, der die Partikel nutzt, der braucht zu dem Zeitpunkt den aktuellen Status bestehend aus Partikeln + hinzugefügten - gelöschten, richtig? Aber was spricht dagegen Hinzufügen + Löschen trotzdem hintereinander zu machen?



  • Die Game Loop wird sehr oft aufgerufen, du musst es also nicht paralle, gleichzeitig ausführen, sondenr kannst es nacheinander abarbeiten.

    Sollte das bei dir nicht gehen, dann steckt irgendwo anders ein Wurm dirnne, der die Performance runterzieht und in dir das Verlangen weckt, dass du gleichzeitig den Effekt löschen musst o.ä.



  • ghjghjghj schrieb:

    dann steckt irgendwo anders ein Wurm drinnen

    Ohoh, ich denke du könntest recht haben. ich habe sogar eine Vermutung.

    EDIT:

    Ok, du hast recht, das problem liegt ganz wo anders, das heist 2 Tage hier wegen mir verhaut und viele neue "Freunde" für nichts.............

    Das Problem ist das sobald ich anfange Elemente hinzuzufügen das die LifeTime der Elemente nicht weiter runtergezählt wird sondern pausiert bis ich _PAR._ADDPARTICLE nicht mehr aufrufe.



  • Ich brauche diese "Gleichzeitigkeit" damit die "alten" Partikel auch während ich "neue " hinzufüge, gelöscht werden.

    Wofür muss es sein, dass die alten Partikel auch während du neue hinzufügst gelöscht werden? Trau Dich, verrat es uns! (<- und das ist seit Seiten die Frage)



  • Eisflamme schrieb:

    Wofür muss es sein, dass die alten Partikel auch während du neue hinzufügst gelöscht werden? Trau Dich, verrat es uns! (<- und das ist seit Seiten die Frage)

    Wenn ich die Maustaste drücke werden permanent neue Partikel erzeugt, ohne ende, bis ich die taste loslasse. Während ich die neuen Partikel erzeuge sollen nebenbei die alten wieder verschwinden. Die sollen nicht ewig herumfliegen.



  • Aha! Also willst Du während des Drückens der Maustaste gleichzeitig Partikel löschen und hinzufügen. D.h. es müssen nicht gleichzeitig Partikel gelöscht und hinzugefügt werden, SONDERN Du willst nach Abhandlung des EventHandlers Partikel hinzugefügt und gelöscht haben (<- dafür muss das noch lange nicht gleichzeitig passieren).

    Merkst Du, wie bescheuert es ist nur "gleichzeitig" zu schreiben? Du hast auf vielfache Nachfrage nicht präzisiert. Und wie die Präzisierung aussehen könnte, siehst Du im ersten Absatz dieses Posts (^ oben!). Merkst Du, was da an Informationen plötzlich dazukommt? Informationen, die Du uns nicht mitgeteilt hast? (Du hast Mausklick nicht in Verbindung mit gleichzeitig gebracht, niemand kann das so verstehen)

    Was klappt mit:

    if(sf::Mouse::isButtonPressed(sf::Mouse::Left)) 
        { 
            sf::Vector2f temp; 
            temp.x = window.mapPixelToCoords(sf::Mouse::getPosition(window)).x; 
            temp.y = window.mapPixelToCoords(sf::Mouse::getPosition(window)).y; 
    
            _PAR._ADDPARTICLE("SPARK", 10, 20, 0, "Images/SPARK.png", temp, 20, 0);
            _PAR._CheckLifeTime(); // <-- NEUE ZEILE! 
        }
    

    Denn nicht?



  • So nur für den Fall das es jemanden interessiert, ich habe den Fehler gefunden.

    ich habe den _Timer 2 mal neu gestartet, anstatt nur einmal wie es sein müsste.

    void PARTICLE::_ADDPARTICLE(string type, float LIFETIME, float SPEED, float GRAVITY, string TEXTURENAME, sf::Vector2f POSITION, unsigned int AMOUNT, unsigned int DIRECTION)
    {
    
        unsigned int counter = AMOUNT;
    
        _Timer.restart();
    
    void PARTICLE::_OPERATE(sf::RenderTexture &render)
    {
        if(_Timer.getElapsedTime().asMilliseconds() >= 100)
            {
    
                _Timer.restart();
    
                for(unsigned int o = 0; o < _AllParticle.size(); ++o)
                {
                    static float value = _AllParticle[o]._LifeTime/2.f;
    


  • Eisflamme schrieb:

    Aha!

    Das jemand AHA! schreibt ist für mich ein kleiner erfolg 🙂

    Seis drum, alles erledigt, es funktioniert.

    Das war der schlimmste Thread überhaut(NICHT WEGEN EUCH!!! Alles meine Schuld, will keinen angreifen), BITTE BITTE löscht diesen Schandmal , so das ich das für immer aus meiner Erinnerung löschen kann.

    An alle, es tut mir leid.Und danke für die mühen, auch wenn sie vergeblich waren, oder auch nicht, sonst hätte ich wer weiss wie lange gesucht bis ich den Fehler gefunden hätte.



  • Hast Du meinen Post gelesen und verstanden, was man hätte besser beantworten können?


  • Mod

    grimmreefer schrieb:

    BITTE BITTE löscht diesen Schandmal , so das ich das für immer aus meiner Erinnerung löschen kann.

    Auch wenn ich deiner Einschätzung zustimme, dass dieses hier unter den Top 10 der schlimmsten Threads eingeordnet werden kann, so löschen wir doch grundsätzlich keine ernsthaften Threads. Ich lass es als mahnendes Beispiel für alle, die in den nächsten Tagen das Forum besuchen, stehen. Sobald der Thread auf die zweite Seite rutscht, interessiert sich ohnehin niemand mehr für deine "Jugendsünde".

    Ich hoffe, du hast ein bisschen was gelernt darüber, wie man Probleme schildert und Fragen stellt.



  • SeppJ schrieb:

    Ich hoffe, du hast ein bisschen was gelernt darüber, wie man Probleme schildert und Fragen stellt.

    Das hoffe ich auch.....

    Eisflamme schrieb:

    Hast Du meinen Post gelesen und verstanden, was man hätte besser beantworten können?

    Ja habe ich.

    Ich denke das diese Verwirrung kam weil weil der Fehler nicht der vermutete war sondern ganz wo anders.



  • SeppJ schrieb:

    Ich lass es als mahnendes Beispiel für alle, die in den nächsten Tagen das Forum besuchen, stehen.

    😃

    Sobald der Thread auf die zweite Seite rutscht, interessiert sich ohnehin niemand mehr für deine "Jugendsünde".

    Mal sehen ob wir dafür sorgen können dass das nicht so schnell passiert 😃 🤡



  • grimmreefer schrieb:

    Ich denke das diese Verwirrung kam weil weil der Fehler nicht der vermutete war sondern ganz wo anders.

    Nö, die Verwirrung kam, weil du - sorry - keinen Plan vom Programmieren hast, und daher auch nicht weisst wie du dich ausdrücken sollst, bzw. was jemand der Plan hat an Informationen benötigen könnte.



  • Mal sehen ob wir dafür sorgen können dass das nicht so schnell passiert

    Ach komm, das wäre doch gemein, wer würde das denn tun. 😋

    Na ja, aber komm, das hatte eigentlich nichts mit Verwirrung zu tun, sondern damit, dass er auf explizite Fragen einfach keine Antworten formuliert hat. Es ist ja keine Programmier-Angewohnheit, dass man eine Frage nicht mit einer paraphrasierten Version der Frage beantwortet. Doch genau das fand permanent statt.



  • hustbaer schrieb:

    Nö, die Verwirrung kam, weil du - sorry - keinen Plan vom Programmieren hast

    Danke für die Blumen, biss jetzt ist noch kein Meister vom Himmel gefallen.
    Ich habe vor einem Jahr angefangen aus Büchern und dem Internet Programmieren zu lernen, ich arbeite meist den ganzen Tag, muss zuhause meine "Baustelle" fertig bekommen und mich um meine Kinder kümmern. Dann setz ich mich für 2 Stunden hin und Lerne/Programmiere. Ich habe keine höhere Schule besucht in der C++ auf dem Stundenplan steht, noch habe ich Studiert. Ich bringe mir das so gut es geht selber bei, und wenn es mal nicht weiter geht frage ich nach.

    Ich könnt mich ruhig aufziehen und euch lustig machen. Deswegen werde ich nicht damit aufhören.



  • Sollst Du auch nicht und ich finde es auch durchaus beeindruckend, dass Du C++ neben all dem anderen Zeug lernst. Ich mache gerade nichts anderes als entwickeln und komme dann nebenbei Mal dazu mich weiterzubilden und bin über jede Erkenntnis froh, die ich gewinne.

    Es ist auch nicht schlimm, wenn Du nicht programmieren kannst. Aber Du musst einfach verstehen, wie man Fragen stellt und Gegenfragen beantwortet. Und tut mir Leid, aber das ist eigentlich nichts Kompliziertes.

    Lies Dir bitte den Thread nochmal komplett durch, lese Dir jede Frage durch, überlege dann, was diejenigen als Antwort hätten gebrauchen können und lies dann kritisch nochmal Deine Antworten durch. Jetzt überlege, ob Du als Außenstehender, der den Code nicht kennt und nur das hat, was Du aufgeschrieben hast, im Stande sein kann das zu lösen.

    Investier die Zeit wirklich Mal. Wenn der nächste Thread kommt und Du auf:

    Wozu brauchst Du einen Ventilator?

    wieder antwortest:

    Um einen Ventilator zu haben.

    statt

    um die Luft abzukühlen.

    , dann raucht's aber. Viele werden Dir nicht mehr helfen, denn so eine Antwort ist fast schon beleidigend, weil Du damit die Frage indirekt ignorierst und keine Lust hast es anständig zu formulieren. Und all Deine Antworten waren Ventilatoren und keine kühlen Lüfte. Mach Dir die Mühe. Nein, ehrlich, mach sie Dir. Nicht ignorieren oder abtun oder nicht drüber nachdenken wie die ganze Zeit.

    Also lies den Thread, tu, was Leute Dir sagen, und mache es solange, bis Du es verstehst, auch wenn nur das einen Tag Zeit kostet. Sonst sehe ich echt schwarz...

    Sorry, dass ich so drauf rumhacke, aber ganz ehrlich: Du machst nicht den Eindruck, als hättest Du diese Rückmeldung kapiert. Und bevor Du das nicht hast, brauchst Du keinen neuen Thread eröffnen, soweit ich das sehe...


Anmelden zum Antworten