SFML konstrukcja kodu
Ostatnio zmodyfikowano 2020-12-02 14:57
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: 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 ); 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 ) { } 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? |
|
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 Test działania biblioteki SFML 2.0. |
|
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. |
|
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. |
|
« 1 » |