[SFML 2.1] migające o nakładające się napisy
Ostatnio zmodyfikowano 2013-10-26 13:06
wiewir1107 Temat założony przez niniejszego użytkownika |
» 2013-10-25 19:11:02 W tym momencie po poprawkach zaproponowanych przez forumowiczów jak na razie tekst nie miga i nie nakłada się ale po kliknięciu przewija mi po całej tablicy a chciałbym żeby wyświetlało tylko jeden element, a następny dopiero po następnym kliknięciu |
|
RazzorFlame |
» 2013-10-25 19:15:24 if( zdarzenie.type == sf::Event::Closed ) { window.close(); }
if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left ) W drugim ifie użyj else if. |
|
wiewir1107 Temat założony przez niniejszego użytkownika |
» 2013-10-25 19:19:13 w sensie tak: if( zdarzenie.type == sf::Event::Closed ) { window.close(); }
else if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left ) { if( !wyswietlanie ) wyswietlanie = true; else wyswietlanie = false; }
} czy ze if( !wyswietlanie ) wyswietlanie = true; else if( co tu ? ) wyswietlanie = false;
} |
|
RazzorFlame |
» 2013-10-25 19:23:19 W tym pierwszym sensie :) |
|
wiewir1107 Temat założony przez niniejszego użytkownika |
» 2013-10-25 19:26:00 to wciąż nie pomaga w razie co daje mój obecny kod: #include <SFML/Graphics.hpp> #include <cmath> #include <SFML/Window.hpp> #include <string> #include <cstdlib> #include <iostream> #include <ctime> #include <SFML/System.hpp> #include <conio.h>
using namespace std; string uczniowie[ 31 ]; int numer = 0; bool powtorzenia[ 31 ]; bool wyswietlanie = false;
int main() { (...) - uzupelnianie tablicy; for( int i = 0; i < 31; i++ ) { powtorzenia[ i ] = false; } sf::RenderWindow window( sf::VideoMode( 800, 600, 32 ), "Do tablicy podejdzie: " ); srand( time( NULL ) ); numer =( rand() % 31 ); sf::Font font; font.loadFromFile( "arial.ttf" ); sf::Text tekst( uczniowie[ numer ], font ); tekst.setCharacterSize( 30 ); tekst.setStyle( sf::Text::Bold ); tekst.setColor( sf::Color::Red ); while( window.isOpen() ) { sf::Event zdarzenie; while( window.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::Closed ) { window.close(); } else if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left ) { if( !wyswietlanie ) wyswietlanie = true; else wyswietlanie = false; } } if( wyswietlanie ) { window.clear(); powtorzenia[ numer ] = true; sf::Text tekst( uczniowie[ numer ], font ); window.draw( tekst ); while( powtorzenia[ numer ] ) { numer =( rand() % 31 ); } } window.display(); } return 0; } |
|
RazzorFlame |
» 2013-10-25 19:31:12 Kod wstawiaj miedzy [cpp]tutaj kod[/cpp] A tak w ogóle to wyswietlanie jest równe false dopiero jak ponownie wcisniesz przycisk myszy. Dlatego co obrót pętli losujesz nowy string. Tekst wyświetlaj cały czas (nie tylko kiedy wyswietlanie == true) a przy przycisnieciu myszy losuj następnego. Edit: while( window.isOpen() ) { sf::Event zdarzenie; while( window.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::Closed ) { window.close(); } else if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left ) { while( powtorzenia[ numer ] ) { numer =( rand() % 31 ); } } } window.clear(); powtorzenia[ numer ] = true; sf::Text tekst( uczniowie[ numer ], font ); window.draw( tekst ); window.display(); } return 0; }
|
|
wiewir1107 Temat założony przez niniejszego użytkownika |
» 2013-10-26 13:00:08 Dzięki wielkie i tylko ostatnie pytanko co zrobić żeby wyświetlały się polskie znaki? Wiem, że to pewnie jest gdzieś w kursie ale jak już pisałem wcześniej niestety muszę to zrobić jak najszybciej i średnio mam czas na przeszukiwanie kursu w poszukiwaniu tego |
|
DejaVu |
» 2013-10-26 13:06:08 Jeden temat = jeden problem. |
|
1 2 « 3 » |