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

SFML konstrukcja kodu

Ostatnio zmodyfikowano 2020-12-02 14:57
Autor Wiadomość
czerwonymoskit
Temat założony przez niniejszego użytkownika
SFML konstrukcja kodu
» 2020-10-08 11:46:25
Mniej więcej ogarnąłem podstawy wyświetlania textu w sfml 2.0.

Próbuję to teraz wmontować w swoją grę ale zawiesza mi ją po uruchomieniu. W konsoli śmiga pięknie.
Nie jestem pewien gdzie mam teraz umieścić te instrukcje. Powiedzmy, że mam taki program:

C/C++
int main()
{
    sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Premiership Manager" );
   
    sf::Font font;
    font.loadFromFile( "Bank Gothic Medium BT.ttf" );
   
    sf::Text text;
    text.setFont( font );
   
    /* tu jakieś deklaracje zmiennych, struktur... dużo tego.
    Dalej podanie zespołów grających. Tabela. */
   
    while( oknoAplikacji.isOpen() )
    {
        sf::Event zdarzenie;
        while( oknoAplikacji.pollEvent( zdarzenie ) )
        {
            if( zdarzenie.type == sf::Event::Closed )
                 oknoAplikacji.close();
           
        }
       
        oknoAplikacji.clear( sf::Color( 150, 150, 150 ) );
       
        text.setString( druzyna[ teamG - 1 ].name );
        text.setCharacterSize( 18 );
        text.setPosition( 120.0f, 0.0f );
        text.setColor( sf::Color::Red );
        oknoAplikacji.draw( text );
       
        text.setString( druzyna[ teamE - 1 ].name );
        text.setCharacterSize( 18 );
        text.setPosition( 580.0f, 0.0f );
        text.setColor( sf::Color::Blue );
        oknoAplikacji.draw( text );
       
        while( i < 90 ) // mecz
        {
            // Ta pętla zapodaje mi przez cały mecz, jest tu sporo instrukcji itd. Tu będę chciał też wypisywać różne komentarze
        } // koniec meczu
       
        oknoAplikacji.display();
    }
   
   
    getchar();
    return 0;
}

To mi nie chce zadziałać. To znaczy kompiluje się ok ale plik exe po uruchomieniu się zawiesza. Zastanawiam się jak mogą się ciągle wyświetlać napisy grających zespołów jeśli po jednym wyświetleniu następuje pętla w której już nie wyświetla się text. Czy mam te instrukcje przenieść do jej środka?
P-177596
pekfos
» 2020-10-08 17:11:38
Struktura kodu jest zła. Byłoby łatwiej coś doradzić, gdyby było wiadomo co tam dokładnie wykonujesz w tej pętli 'rozgrywającej mecz'. Zgaduję że jest tam kod konsolowy, który w swojej konstrukcji polega na tym, że możesz zatrzymać program (dla opóźnienia, albo wczytania czegoś od usera). Coś takiego nie przejdzie, bo tu nie możesz się zatrzymać. Każdy obieg pętli while( oknoAplikacji.isOpen() ) generuje jedną klatkę gry, a chcesz mieć pewnie ~60 fps w każdym momencie swojego meczu, a nie jeden kompletny mecz w ciągu jednej klatki. Kod musi być napisany w założeniu że program będzie śmigać przez niego wielokrotnie w ciągu sekundy. Zachowanie programu kontroluj zmiennymi i samym czasem. Przykład użycia czasu możesz znaleźć w » Kurs SFML 2.x, C++ » Instalacja i konfiguracjaTest działania biblioteki SFML 2.0 lekcja.
P-177598
czerwonymoskit
Temat założony przez niniejszego użytkownika
» 2020-12-02 14:03:39
Chyba mam za stary komputer bo dzieją się cyrki z tą biblioteką. Raz ten sam kod kompiluje, a raz nie.
P-177775
DejaVu
» 2020-12-02 14:57:49
Komputer nie ma związku z procesem kompilacji. Jeżeli Windows działa to kompilacja też będzie działała dobrze.
P-177777
« 1 »
  Strona 1 z 1