Bu sayfadaki yazılar
Sayfanın metni
Sayfa 24
SDL Nedir?
SDL, Simple DirectMedia Layer yani basit direkmedya katmanıdır. Biraz motamot bir çeviri oldu. Anlaşılır bir ifade ile SDL ses, klavye, mouse, joystick, 3d donanımı ve 2d grafik çizimi için hazırlanmış platform bağımsız bir çokluortam (multimedia) kütüphanesidir. Mpeg oynatıcılarda, Emulatorlerde, birçok popüler oyunda ve Linux'a port edilen birçok Windows oyununda kullanılmaktadır.
SDL Linux, Windows, BeOS, MacOS Classic, MacOS X, FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX ve QNX ortamlarını destekler. Ayrıca resmi olmasa da kod açık olduğu için gönüllü çalışmalar sonucunda Windows CE, AmigaOS, Dreamcast, Atari, NetBSD, AIX, OSF/Tru64, RISC OS ve SymbianOS üzerinde de çalışması sağlanmıştır.
SDL C dili ile yazılmış olmasına rağmen C++ ile doğal hali ile çalışmakta ve Ada, Eiffel, Java, Lua, ML, Perl, PHP, Pike, Python ve Ruby gibi birçok dil içinde uyarlamaları bulunmaktadır.
Neden SDL?
Çünkü SDL öğrenmesi ve kullanması kolay ama karşılığında çok güçlü bir kütüphanedir. Grafik konusunda OpenGL ile beraber çok kolay bir şekilde çalışabilmesine ek olarak eksik kaldığı her alan içinde SDL'i destekleyen ek kütüphaneler bulunmaktadır. Ses ve müzik için SDL mixer, resimler için SDL image, true type font desteği için SDL ttf, ek çizim komutları için SDL gfx ve network için SDL net bunların en bilinen, en çok kullanılanlarındandır.
Bütün bunların yanında SDL platformdan bağımsızdır. Yazdığınız kod bir başka platformda neredeyse hiçbir değişikliğe gerek duymadan aynen çalışabilmektedir.
SDL Kurulum
Bu konu aslında basit olmasına rağmen yeni başlayanları biraz zorlayabilir. Yine de elimden geldiğince her platformda SDL'i nasıl kurup kullanmaya hazır hale getireceğimizi yazmaya çalışacağım.
Windows
Windows ortamında en yaygın olarak MS Visual Studio, Borland C++ Builder ve IDE'leri kullanılmaktadır. Ama ben daha önce hiç Builder kullanmadığım ve internette de C++ Builder için yazılmış bir kurulum yazısı bulamadığım için size tahmini bilgi verebileceğim, gerisi size kalmış. Yine de pek sorun yaşayacağınızı sanmıyorum.
Visual Studio
İlk olarak MS'in IDE'si Visual Studio ile başlayalım. Ben Dev-C++ kullandığım için bu IDE hakkında pek bilgim yok ama internette yayınlanmış İngilizce derslerden topladığım bilgi ile yardımcı olmaya çalışacağım.
http://www.libsdl.org/download-1.2.php adresinden download bölümünden, Development Libraries başlığı altındaki Visual C++ için olan dosyayı (SDL-devel-1.2.8-VC6.zip gibi bir adı olması lazım) indirin.
Sıkıştırılmış dosyayı açın. Zip dosyasının içinden çıkan dosyalar arasında iki tane önemli klasör var. Bunlar "include" ve "lib" klasörleri. "lib" klasörünün içinden çıkanları C:\Program Files\Microsoft Visual Studio\VC98\Lib (büyük ihtimalle sizin bilgisayarınızda da aynı klasördür ama eğer MS'i kurduğunuz yer farklı ise bu yolu da ona göre değiştirin.) klasörü altına kopyalayın. "include" klasörü içindeki dosyaları da C:\Program Files\Microsoft Visual Studio\VC98\Include (diğeri ile aynı şekilde farklı bir klasör olabilir sizinki, artık duruma göre değişikliği siz yaparsınız. Bir de include'un altında SDL klasörü yok onu sizin yaratmanız gerek.) klasörü altına kopyalayın.
Şimdi Visual Studio'yu çalıştırın ve yeni bir proje yaratın. "Win32 Application" seçeneğini ve "empty project" seçeneğini seçin. File menüsündeki New seçeneği ile yeni bir C++ kaynak dosyası (C++ source file) yaratın ve adını main.cpp koyun.
Daha sonra proje ayarları (project settings) (project->settings menüsü yolu ile) bölümüne gidin. LINK tabına tıklayın listelenmiş diğer lib dosyalarının altına sdl.lib ve sdlmain.lib dosyalarını ekleyin.
Ardından yine proje ayarları bölümünde C/C++ tabına tıklayın. Drop-down menüden "Code Generation" seçeneğini seçin. Ardından da 'Use run-time library' drop-down menüsünden 'Multithreaded DLL' seçeneğini seçin.
Son bir şey daha. Sıkıştırılmış dosyanın içinde son bir önemli dosya bulunmakta. SDL.DLL dosyası. Bu dosyayı alıp ister işletim sisteminizin system klasörüne (Win 95, 98, ME için C:\windows\system klasörü ya da Windows NT, 2000 and XP için C:\windows\system32 klasörü), ister uygulamanızın exe dosyasının çalışacağı klasöre kopyalayın. Eğer DLL dosyasını system klasörüne kopyalarsanız yapacağınız her SDL programı için DLL dosyasını baştan baştan kopyalamanıza gerek kalmaz. Aksi takdirde her programın klasörüne koymanız gerekir. Ayrıca programlarınızı dağıtırken de bu DLL dosyasını programınız ile vermeniz gerekiyor. Aksi halde yaptığınız program başka bilgisayarlarda çalışmaz.
MS Visual Studio ile işimiz bu kadar, bütün bu adımları gerçekleştirdikten sonra MS VC SDL ile program geliştirmeye hazır hale geliyor.
Dev-Cpp
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 25
için SDL yüklemenin iki yolu var. Birincisi http://www.devpaks.org sitesine gidip SDL için gerekli devpak dosyasını indirmek ve Dev-Cpp içerisindeki Package Manager ile bu devpak dosyasını yüklemek. Bu sayede hem SDL kütüphanesi sorunsuzca bilgisayarınıza yüklenecek hem de elinizin altında hızla program yazmaya başlamanız için hazır bir SDL kodu olacak.
Ama ne yazık ki hazır SDL kodu içerisinde birkaç hata bulunmakta, yine de bunları düzeltmek oldukça kolay.
Diğer yol ise yukarıdaki gibi geliştirme paketini indirip her dosyayı yerine kurmak. Bu yolu izlerken yapmamız gerekenler;
1. adresinden download bölümünden Development Libraries başlığı altındaki MinGW32 için olan dosyayı (SDL-devel-1.2.8-mingw32.tar.gz gibi bir adı olması lazım) indirin.
2. Sıkıştırılmış dosyayı açın. Zip dosyasının içinden çıkan dosyalar arasında iki tane önemli klasör var. Bunlar "include" ve "lib" klasörleri. "lib" klasörünün içinden çıkanları C:\Dev-Cpp\lib klasörü altına kopyalayın. "include" klasörü içindeki dosyaları da C:\Dev-Cpp\include\SDL (include'un altında SDL klasörü yok, onu sizin yaratmanız gerek.) klasörü altına kopyalayın.
3. Sıkıştırılmış dosyanın içinde son bir önemli dosya bulunmakta: SDL.DLL dosyası. Bu dosyayı alıp ister işletim sisteminizin system klasörüne (Win 95, 98, ME için C:\windows\system klasörü ya da Windows NT, 2000 and XP için C:\windows\system32 klasörü), ister uygulamanızın exe dosyasının çalışacağı klasöre kopyalayın. Eğer DLL dosyasını system klasörüne kopyalarsanız yapacağınız her SDL programı için DLL dosyasını baştan baştan kopyalamanıza gerek kalmaz. Ayrıca SDL.DLL dosyasını C:\Dev-Cpp\dll klasörünün altına da kopyalayın.
4. Dev-Cpp'ı çalıştırın. New Project butonu ile yeni bir proje açın. Eğer Devpak'ı yüklediyseniz proje şablonları arasında Multimedia tabı altında SDL için hazır bir şablon hazır bulunmakta. Verdiğim dosya ile bu şablondaki dosyayı değiştirdiyseniz bu şablon sorunsuzca çalışacaktır. Bu şablon üzerinden dilediğinizce SDL uygulamalarınızı geliştirebilirsiniz. Ama eğer Devpak ile değil de SDL'in sitesinden indirdiğiniz sıkıştırılmış dosyadan kurduysanız proje ayarlarını elle yapmalısınız. İlk olarak yeni bir proje açın (New Project). Ardından Project Browser'da çıkan projenizin adına sağ tuşla tıklayın ve Project Options'ı seçin. Burda ilk olarak Type bölümünden Win32 GUI seçeneğini seçin. Eğer Win32 Console'u seçerseniz SDL programınız her çalıştığında önce DOS penceresi açılır. Ardından programınız çalışır. Devamında aynı pencerede Parameters tabını açın. Compiler başlığı altına -Dmain=SDL_main parametrelerini girin. Linker başlığı altına ise -lmingw32 -lSDLmain parametrelerini girin.
Ayarlamalar bu kadar. İsterseniz şimdi projenizi kaydedin ve SDL projesine başlayacakken ayarları hazır olduğundan bu proje üzerinden başlayın. Geriye bir tek kod yazmanız kaldı. O da sonraki bölümlerde anlatılacak. MinGW32
Dev-Cpp'ta kendi içerisinde MinGW32 derleyicisi kullandığı için aşağı yukarı aynı ayarlar geçerli. Uzun uzadıya anlatmayacağım. Yukarıdaki açıklamalar yardımı ile sorunsuzca ayarlamaları yapabilirsiniz diye düşünüyorum.
Linux
Linux'ta SDL yüklemenin en kolay yolu kullandığınız dağıtımın paket yöneticisinden SDL paketini seçip indirmenizdir. Bir diğer yol da www.libsdl.org adresinden kaynak kodlarını indirip sırayla "./configure", "make" ve "make install" komutlarını vermeniz yeterlidir. Kodunuzu SDL ile derlemek için de kodun içine '#include "SDL.h"' satırını eklemeniz ve derleyici parametrelerine de '-I/usr/include/SDL' ve '-lSDL' parametrelerini eklemeniz gereke-
SDL'e giriş
SDL öğrenmesi oldukça kolay bir kütüphanedir. Bu nedenle hızla kod yazmaya girişeceğim. Kısa sürede öğreneceksiniz zaten. SDL, 8 alt sistemin bileşiminden oluşmaktadır. Bunlar Ses(Audio), CDROM, Olay yönetimi(Event Handling), Dosya G/Ç(File I/O), Joystick yönetimi(Joystick Handling), Çoklu Görev(Threading), Zamanlayıcı(Timers) ve Grafik(Video)'dur. Bu alt sistemleri kullanmak için ilk önce bu sistemleri çalıştırmanız gerekir. Bunun için iki komut bulunmaktadır. Bunlar SDL_Init ve SDL_InitSubSystem'dir. SDL_Init bütün SDL kodlarından önce çalıştırılmalıdır. Bu komut SDL sistemini çalıştırmaya başlar. SDL_InitSubSystem ise çalışma anında istediğiniz alt sistemin çalışmasını sağlar.
Kullanımları şu şekildedir: SDL Init ( SDL INIT VIDEO );
Bu komutla SDL programı çalıştırılır ve SDL'in video alt sistemi aktif hale getirilir.
SDL InitSubSystem ( SDL INIT AUDIO | SDL INIT TIMER
Bu komutla çalışmakta olan SDL programında ses ve zamanlayıcı alt sistemleri aktif hale getirildi. | işareti ile aynı anda birden fazla SDL alt sistemini seçebiliriz. Bu yöntemi SDL_Init komutu ile de kullanabiliriz.
Alt sistem bayrakları(flag) listesi:
1. SDL_INIT_TIMER - Zamanlayıcı - 2. SDL_INIT_AUDIO - ses - 3. SDL_INIT_VIDEO - grafik -
4. SDL_INIT_CDROM - cdrom -