61656 str 1

61656 str 1



dla programistów


A


auroESH

Hve


Gra w statki - przykład wykorzystania biblioteki SDL

Marek Sawerwain

Nieskomplikowane zasady gry w statki, rozgrywanej na dwuwymiarowej planszy, są powszechnie znane, zatem jest to dobry przykład do własnoręcznego przeniesienia w „cyfrowy świat”.

Podstawowy problem, który pojawia się natychmiast, to oczywiście sposób, w jaki ma grać komputer. Gra w statki z komputerem nie jest jednak najciekawszym rozwiązaniem, więc nasza wersja będzie przeznaczona do gry w sieci (poprzez Internet) z koleżanką lub kolegą.

Napisanie tego rodzaju gry to bardzo dobre ćwiczenie, które pozwala zdobyć nowe doświadczenie. Wbrew pozorom, utworzenie jakiejkolwiek gry nigdy nie jest trywialnym zadaniem - zawsze pojawia się kilka problemów do rozwiązania. Nasza wersja „Gry w statki” pozwala grać poprzez sieć, a to tym bardziej utrudnia napisanie tego rodzaju programu.

Zaczynamy od Hello World!

Pomimo tego, że SDL posiada bardzo wygodne i łatwe do zrozumienia API, to dla osób, które po raz pierwszy widzą program napisany przy pomocy tej biblioteki, może on okazać się dość trudny do analizy. Z tego powodu na początek chciałbym przedstawić krótki program pokazujący na naszym ekranie „najsłynniejszy komunikat” w historii informatyki. Jego pełny kod źródłowy znajduje się na Listingu 1.

Nasz program ma pokazać komunikat, ale SDL nie oferuje takiej funkcji. Mamy dwie możliwości: sami napiszemy funkcję, która będzie tworzyć napisy, albo skorzystamy z dodatkowej biblioteki, np. SDL_Ttf która pozwala „pisać po ekranie” wykorzystując czcionki TrueType (w efekcie uzyskamy napis o bardzo wysokiej jakości).

Inicjalizacja bibliotek

Zanim cokolwiek pokażemy na ekranie, należy poprawnie zainicjalizować bibliotekę SDL oraz SDL_Ttf. Trzeba zacząć oczywiście od SDL:

O autorze:

Autor zajmuje się tworzeniem oprogramowania dla WIN32 i Linuksa. Zainteresowania: teoria języków programowania oraz dobra literatura.

Kontakt z autorem: autorzy@softwore.com.pl.

if (SDL_Init(SDL_INIT_VIDEO) < 0) {

fprintf(stderr, "komunikat o błędzie\n”); return -1:

I

atexit(SDL_Quit):

Za inicjalizację biblioteki odpowiedzialna jest funkcja SDL_Init. W jej argumencie podajemy sumę bitową różnych podsystemów, które chcemy uruchomić. Ponieważ dla nas wystarczający jest system VIDEO, dlatego podaliśmy tylko jedną wartość. Gdyby jednak, oprócz obsługi obrazu, była potrzebna obsługa dźwięku oraz CD-ROM-u, to wywołanie funkcji inicjującej byłoby następujące:

S D L In i t(S D L INIT VID EO | SDL_INIT_AUD10 | SDL_INIT_

CDROM). Aby wykryć, czy wystąpił jakiś błąd, wystarczy

Słowo o SDL

SDL (Simple DirectMedia Library) to biblioteka udostępniająca niskopoziomowe funkcje dostępu do karty graficznej i dźwiękowej, ale również do innych urządzeń, takich jak np. CD-ROM. Potrafi ona również odczytywać wskazania joysticka czy myszki. SDL zapewnia ponadto dostęp do grafiki 3D poprzez system OpenGL. Głównym zastosowaniem tej biblioteki są aplikacje multimedialne m.in. gry. Zaletą tej biblioteki jest jej przenośność, bowiem udostępnia jednolite API identyczne pod Linuksem, Windowsem oraz innymi platformami, takimi jak BeOS czy Mac OS X. Biblioteka oferuje tylko podstawową funkcjonalność, np. nie udostępnia funkcji do rysowania linii czy okręgów. Tego rodzaju funkcje trzeba zdefiniować samodzielnie. Oferowane przez SDL operacje, takie jak choćby kopiowanie obrazów (SDL_BlitSurface), są jednak realizowane bardzo szybko z wykorzystywaniem akceleracji sprzętowej, jeśli tylko taka jest dostępna.

Walory biblioteki, głównie wysoka wydajność oraz wielo-platformowość, spowodowały, że SDL jest wykorzystywane przez komercyjnych producentów do tworzenia portów gier dla Linuksa. Pierwszą taką grą, która została przeniesiona dzięki SDL, była Civilization: Cali To Power. Projektów darmowych, opartych o licencję GPL lub podobną, jest bardzo wiele. Jednym z ciekawszych jest port gry Homeworld, której kod źródłowy został opublikowany pod koniec września 2003 roku.

Oprócz samej biblioteki SDL, istnieją biblioteki ściśle z nią stowarzyszone, takie jak używane w naszej grze SDL_Net albo SDLJmage, czy bardzo dobra biblioteka do obsługi plików audio SDL_Mixer.

56


grudzień 2003


Wyszukiwarka

Podobne podstrony:
46795 str 4 dla programistów * Dzięki temu, że używamy dwóch pętli, można wprowadzić animację czy zm
53292 str 8 dla programistów _A program klienta    program serwera Rysunek 4. Sche
39153 str 3 dla programistówr Listing 1. „Hello World" w trybie graficznym, stworzone z wykorzy
120 4 DLA PRAKTYKI WYKON,AJ PONIŻSZY PRZYKŁAD NAPISZ PROGRAM. W KTÓRYM NARZĘD2IE POKONUJE ODLEGŁOŚĆ
Programowanie - rzemiosło czy sztuka ? Przykładowe nazwy podręczników dla programistów: The art of
Zrozumieć świat 1 podręcznik fizyki dla gimnazjum?rbara sagnowska str14 Rozdział 4 idk opisujemy ru
IMAG0129 Scroll Lock © HomeUkłady PŁD Twor/enlc pliku WU.IM I OWEGO ( .Jod) dla programatora I Uruc
Image7 Rys. 2e. Schemat układu do przykładu 2.2 Tablica 2f przedstawia program pamięci stałej do prz

więcej podobnych podstron