• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

tablica dynamiczna a asfml

Object Storage Arubacloud
0 głosów
164 wizyt
pytanie zadane 2 stycznia 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)

Mam taki kod 

#include <SFML/Graphics.hpp>
#include <vector>

int main()
{
    sf::RenderWindow window(sf::VideoMode(600, 600), "");
    sf::Event event;
    sf::RectangleShape shape(sf::Vector2f(10, 10));

    std::vector<sf::RectangleShape>x;

    bool block;
    x.push_back(shape);

    while(window.isOpen())
    {
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::A));
        {
            x.pop_back();
        }
        while(window.pollEvent(event))
        {

        }
        window.clear();
        window.draw(shape);
        window.display();
    }
}

I jak usuwam obiekt klikająć a, to mi program przestaje odpowiadać, więc, jak użyć tablicy dynamicznej w sfml?

3 odpowiedzi

0 głosów
odpowiedź 2 stycznia 2016 przez Patrycjerz Mędrzec (192,320 p.)
Popatrz sobie, ile razy, przy jednym naciśnięciu klawisza, usuwasz elementy z kontenera? Odpowiedź brzmi: wielokrotnie, ponieważ podczas wciśnięcia i puszczenia danego klawisza, pętla wykona się kilkukrotnie. Lepiej użyj warunku w pętli zdarzeń, ponieważ wtedy sygnał będzie przerwany na moment, po wciśnięciu klawisza (podobnie, jak w edytorze tekstu).
0 głosów
odpowiedź 2 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)

Po pierwsze: pollEvent() zawsze na początku pętli głównej! Inaczej mogą (lecz nie muszą) powstawać bugi.

Po drugie: if(!x.empty()) x.pop_back();

Edit: Po trzecie: ten if z pop_back() zdąży wykonać się paręnaście razy zanim zdejmiesz palec z klawisza. Zastosuj znaną Ci już blokadę.

komentarz 2 stycznia 2016 przez Avernis Nałogowiec (27,400 p.)
Dzięki, na razie pomogło, ale ja chcę aby po wciśnięciu przycisku/usunięcia obiektu obiekt zniknął
komentarz 2 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)
Zniknął po usunięciu? W sensie że jak?
komentarz 2 stycznia 2016 przez Avernis Nałogowiec (27,400 p.)
Nie, chodzi mi o to że czemu po usunięciu obiektu sf::rectangleShape shape, czemo on nie znika jak już go nie ma
komentarz 3 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)

Bo nie znika... Do vectora przysyłasz tylko jego kopię. Jakbyś wywołał destruktor obiektu i potem go użył to by program wywaliło.

komentarz 3 stycznia 2016 przez Avernis Nałogowiec (27,400 p.)
A jak przesłać oryginał?
komentarz 3 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)
Nie da się i nie widzę powodu dlaczego miałoby to być potrzebne.
0 głosów
odpowiedź 2 stycznia 2016 przez arek01996 Stary wyjadacz (12,100 p.)
Użyj metody erase. I tak masz jeden obiekt...
komentarz 2 stycznia 2016 przez MetGang Nałogowiec (34,360 p.)
A jaka jest różnica? x.pop_back() vs x.erase(x.end()-1);

Podobne pytania

0 głosów
3 odpowiedzi 1,539 wizyt
pytanie zadane 17 października 2015 w C i C++ przez Ehlert Ekspert (212,670 p.)
0 głosów
2 odpowiedzi 519 wizyt
pytanie zadane 4 października 2018 w C i C++ przez uther1455 Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 786 wizyt
pytanie zadane 1 grudnia 2018 w C i C++ przez four Użytkownik (720 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...