Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] Problem z "licznikiem"

Ostatnio zmodyfikowano 2014-07-15 20:44
Autor Wiadomość
Roddeck
Temat założony przez niniejszego użytkownika
[SFML 2.0] Problem z "licznikiem"
» 2014-07-15 14:10:48
Witam serdecznie,
Chciałbym poprosić Was, drodzy użytkownicy, o pomoc w mojej grze, na której uczę się obsługi biblioteki SFML. Mój problem pojawia się w miejscu gdzie potrzebuję zrobić licznik. Schemat (jeśli dobrze myślę) ma wyglądać tak:
na początku ustawiam sf::Text liczby na wartość "0"
uruchamia się pętla programu
Rysuję tło (czyli po prostu sprite)
Rysuję sf::Text liczby
zwiększam wartość zmiennej i typu int w pętli
konwertuję i na string
za pomocą set.String ustawiam nową liczbę dla sf::text liczby
czyszczę okno za pomocą okno.clear()
Po skompilowaniu programu dostaję liczbę "1" która się w ogóle nie zmienia. Zmagam się z tym od 2 dni, i chyba nie jestem w stanie wymyślić rozwiązania..
Fragment kodu:
C/C++
int draw::game( sf::RenderWindow & okno, gamectrl & nowa )
{
    sf::Font font;
    font.loadFromFile( "segoesc.ttf" );
    sf::Event event;
    sf::Texture tlo;
    string liczba = "0";
    int i = 0;
    tlo.loadFromFile( "mapa.png" );
    sf::Sprite tlos( tlo );
    tlos.setPosition( 0, 40 );
    sf::View view( sf::Vector2f( 250, 250 ), sf::Vector2f( 500, 500 ) );
    sf::Text liczby( liczba, font );
    stringstream ss;
    string str;
    liczby.setPosition( 10, 0 );
    while( okno.isOpen() )
    {
       
        while( okno.pollEvent( event ) )
        {
            if( event.type == sf::Event::Closed )
            {
                okno.close();
            }
            if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape || event.type == sf::Event::MouseButtonPressed && event.key.code == sf::Mouse::Left )
                 okno.close();
           
            if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Right )
            {
               
            }
        }
        okno.setView( view );
        //view.move(0.1, 0);
        okno.draw( tlos );
        okno.draw( liczby );
        i++;
        ss << i;
        ss >> liczba;
        liczby.setString( liczba );
        okno.display();
        okno.clear();
       
    }
   
    return 0;
   
   
}
P-113819
Dragonit
» 2014-07-15 19:33:59
A pokaż funkcję główną tee :D
A na moje oko to zadeklaruj zmienną  "i" globalnie i zobacz czy działa :D
P-113837
Roddeck
Temat założony przez niniejszego użytkownika
» 2014-07-15 19:37:52
Funkcja główna tylko wywołuję metodę game i przekazuje okno przez referencję, raczej nie ma żadnego wpływu na to.
P-113838
Monika90
» 2014-07-15 19:47:14
Nieprawidłowo używasz stringstream, zrób tak
C/C++
okno.draw( liczby );
++i;
ss.str( "" );
ss << i;
liczby.setString( ss.str() );
okno.display();
a zmiennej liczba się pozbądź, po co Ci ta zmienna?

zresztą, w ogóle można to zrobić bez stringstream
C/C++
okno.draw( liczby );
++i;
liczby.setString( to_string( i ) );
okno.display();
P-113839
Roddeck
Temat założony przez niniejszego użytkownika
» 2014-07-15 20:44:22
działa idealnie, dzięki wielkie! :)
P-113846
« 1 »
  Strona 1 z 1