Wprowadzenie
Jeżeli zwalczyłeś wszelkie problemy instalacyjne i przetestowałeś działanie biblioteki
SFML 2.0 to ze spokojnym sumieniem możesz kontynuować czytanie niniejszego rozdziału. Rozdział ten skoncentruje się na podstawach SFML-a takich jak:
Funkcja główna programu
Pracując z biblioteką
SFML 2.0 możemy korzystać ze wszystkich znanych postaci funkcji głównej main. Są jednak postacie, które są preferowane - są one bowiem uniwersalne i niezależne od systemu operacyjnego, pod którym będzie kod kompilowany. Postacie te są następujące:
oraz
int main( int argc, char ** argv )
{
return 0;
}
Druga postać funkcji umożliwia pobieranie parametrów przekazanych poprzez wiersz poleceń - jeżeli z nich nie korzystasz to możesz ze spokojnym sumieniem używać pierwszej postaci funkcji main.
Tworzenie okna aplikacji
Skoro wiesz już jak powinna wyglądać funkcja główna programu to można się w końcu zabrać za właściwą naukę biblioteki
SFML 2.0. Pierwszą sprawą jaką należy omówić jest tworzenie okna aplikacji. Okno aplikacji tworzy się za pomocą klasy
sf::Window umieszczonej w przestrzeni nazw
sf. Plik nagłówkowy, który należy dołączyć to:
#include <SFML/Window.hpp>
Utworzenie okna SFML odbywa się więc poprzez utworzenie zmiennej typu
sf::Window oraz jednoczesne przekazanie odpowiednich argumentów do konstruktora tworzonego obiektu. Przykładowe utworzenie okna może więc wyglądać tak:
sf::Window oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Kurs SFML 2.0 - http://cpp0x.pl" );
Powyższy zapis utworzy nam okno SFML o szerokości 800px i wysokości 600px z 32 bitową głębią kolorów. Tytuł okna został określony przez drugi argument klasy
sf::Window i jest nim
'Kurs SFML 2.0 - http://cpp0x.pl'.
Jeżeli nie chcemy tworzyć okna odrazu to możemy utworzyć obiekt okna bez podawania argumentów konstruktorowi, czyli po prostu napisać:
sf::Window oknoAplikacji;
Okno można utworzyć później poprzez wywołanie metody
create należącej do klasy
sf::Window. Przykładowe wywołanie, które będzie równoważne do pierwszego omówionego zapisu będzie wyglądało tak:
sf::Window oknoAplikacji;
oknoAplikacji.create( sf::VideoMode( 800, 600, 32 ), "Kurs SFML 2.0 - http://cpp0x.pl" );
Myślę, że argumenty metody
create nie wymagają już wyjaśnienia i wiadomo jakie mają one znaczenie :)
Okno w trybie pełnoekranowym
Jeżeli ucząc się biblioteki myślisz przede wszystkim o tworzeniu gier to zapewne chciałbyś mieć możliwość uruchamiania aplikacji w trybie pełnoekranowym. W SFML jest to bardzo proste - wystarczy podać jako trzeci argument wcześniej omówionego konstruktora flagę stylu
sf::Style::Fullscreen. Pełne wywołanie tworzące okno w trybie pełnoekranowym będzie więc wyglądało tak:
sf::Window oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Kurs SFML 2.0 - http://cpp0x.pl", sf::Style::Fullscreen );
Jak widać nie było to trudne i nie wymagało dużego nakładu pracy :)
Pętla główna programu
Jeżeli miałeś już styczność z pisaniem gier, aplikacji okienkowych czy też bardziej złożonych aplikacji konsolowych to zapewne wiesz, że w programie musi istnieć coś takiego jak główna pętla aplikacji. Wewnątrz takiej pętli umieszczamy kod, który ma się stale wykonywać, czyli może być to np. rysowanie postaci, którą co i rusz rysujemy na nowej pozycji w każdym kolejnym przebiegu pętli. Zanim jednak dojdziemy do rysowania czegokolwiek na ekranie, zobaczmy jak wygląda pętla główna programu:
for(;; )
{
oknoAplikacji.display();
}
W powyższym kodzie została utworzona nieskończona pętla wewnątrz której znajduje się metoda
display, która odpowiada za wyświetlanie okna SFML. Wyjście z pętli nieskończonej możemy wykonać poprzez użycie słowa kluczowego
break, jednak nie jest to konieczne - możemy bowiem wykorzystać inną metodę klasy
sf::Window, która zwraca informację czy okno jest otwarte. Metoda, która realizuje wspomnianą funkcjonalność posiada nazwę
isOpen. Po drobnych więc modyfikacjach ostatecznie nasza główna pętla aplikacji może wyglądać tak:
while( oknoAplikacji.isOpen() )
{
oknoAplikacji.display();
}
Kompletny kod aplikacji
Na zakończenie warto jeszcze zobaczyć jak będzie wyglądał kod całej aplikacji złożony z elementów, które zostały tu omówione:
#include <SFML/Window.hpp>
int main()
{
sf::Window oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Kurs SFML 2.0 - http://cpp0x.pl" );
while( oknoAplikacji.isOpen() )
{
oknoAplikacji.display();
}
return 0;
}
Powyższy kod nie jest jeszcze kompletny, bowiem nie posiada on obsługi zamykania okna SFML - w konsekwencji nie da się zamknąć okna aplikacji przez co wymagane będzie zabicie procesu poprzez menedżer zadań Windows. W kolejnym rozdziale kod zostanie uzupełniony o brakującą funkcjonalność zamykania okna, tak więc zapraszam do zapoznania się z kolejnym rozdziałem :)