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

[SFML 2.1] migające o nakładające się napisy

Ostatnio zmodyfikowano 2013-10-26 13:06
Autor Wiadomość
wiewir1107
Temat założony przez niniejszego użytkownika
[SFML 2.1] migające o nakładające się napisy
» 2013-10-25 08:15:37
Witam jak w temacie mam problem z tym, że napis, który mam wyświetlić po pierwsze miga, a zmianie go na następny nakłada się z poprzednim ale nakładają się zawsze tylko po dwa góra trzy.

C/C++
#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 ];


int main()
{
    //tutaj zadeklarowanie uczniów w tablicy od 0 do 30
    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 );
   
   
    while( window.isOpen() ) {
       
        sf::Event zdarzenie;
        while( window.pollEvent( zdarzenie ) )
        {
            if( zdarzenie.type == sf::Event::Closed ) {
               
                window.close();
            }
           
            if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left ) {
                window.clear();
                powtorzenia[ numer ] = true;
                //wyswietlenie ucznia
                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 );
               
                window.draw( tekst );
                _getch();
               
               
                while( powtorzenia[ numer ] ) {
                    numer =( rand() % 31 );
                }
               
            }
        }
       
        window.display();
    }
   
   
    return 0;
}
P-94504
akwes
» 2013-10-25 10:23:37
Dlaczego obsługujesz rysowanie w pętli zdarzeń?

» KursyKurs SFML 2.0, C++ kurs
P-94506
wiewir1107
Temat założony przez niniejszego użytkownika
» 2013-10-25 16:52:50
A gdzie powinienem jestem totalnie zielony i wiem ze powinienem przeczytać cały poradnik ale niestety nie mam czasu bo musze to zrobić jak najszybciej plus to ma się wyświetlać po kliknięciu wiec myślałem że musi być w tej pętli
P-94523
kubawal
» 2013-10-25 17:01:06
W pętli głównej.
P-94525
wiewir1107
Temat założony przez niniejszego użytkownika
» 2013-10-25 17:22:06
Ale skoro dopiero po kliknięciu chce żeby czyscilo poprzedni napis i rysowalo nowy to nie powinno być w tej pętli?
P-94528
kubawal
» 2013-10-25 17:27:48
C/C++
bool czyWyswietlac = false;
while( win.isOpen() )
//pętla główna
{
    while( /*...*/ )
    //pętla zdarzeń
    {
        if( /*kliknięto*/ )
        {
            czyWyswietlac = true;
        }
        //...
    }
    if( czyWyswietlac )
    {
        // tutaj kod wyświetlający
    }
    //...
}
P-94529
wiewir1107
Temat założony przez niniejszego użytkownika
» 2013-10-25 18:08:14
ok dzięki wielkie, a teraz jeszcze jak to zrobić żeby dany napis zostawał , aż do następnego kliknięcia

mój kod wyświetlania wygląda tak
C/C++
if( wyswietlanie ) {
    window.clear();
    powtorzenia[ numer ] = true;
    //wyswietlenie ucznia
    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 );
   
    window.draw( tekst );
    _getch();
   
   
    while( powtorzenia[ numer ] ) {
        numer =( rand() % 31 );
    }
   
}
od razu mowie ze jakby dodać po prostu na końcu tej ifki wyswietlanie= false to znowu pojawia się ten problem z miganiem i pokrywaniem tekstu. Czasami przez pierwsze pare nazwisk nie pokrywają się
P-94533
kubawal
» 2013-10-25 18:10:30
Pomyśl trochę...
C/C++
bool czyWyswietlac = false;
while( win.isOpen() )
//pętla główna
{
    while( /*...*/ )
    //pętla zdarzeń
    {
        if( /*kliknięto*/ )
        {
            if( !czyWyswietlac )
                 czyWyswietlac = true;
            else
                 czyWyswietlac = false;
           
        }
        //...
    }
    if( czyWyswietlac )
    {
        // tutaj kod wyświetlający
    }
    //...
}
P-94534
« 1 » 2 3
  Strona 1 z 3 Następna strona