[SFML 2.0] Problem z "licznikiem"
Ostatnio zmodyfikowano 2014-07-15 20:44
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: 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 ); okno.draw( tlos ); okno.draw( liczby ); i++; ss << i; ss >> liczba; liczby.setString( liczba ); okno.display(); okno.clear(); } return 0; }
|
|
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 |
|
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. |
|
Monika90 |
» 2014-07-15 19:47:14 Nieprawidłowo używasz stringstream, zrób tak 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 okno.draw( liczby ); ++i; liczby.setString( to_string( i ) ); okno.display();
|
|
Roddeck Temat założony przez niniejszego użytkownika |
» 2014-07-15 20:44:22 działa idealnie, dzięki wielkie! :) |
|
« 1 » |