Montag, 1 Feb, 2010
Einleitung
Hallo,
in diesen Blog möchte ich festhalten wie ich SDL lerne um ein Spiel zu programmieren. Dabei möchte ich meinen Lernfortschritt in einer Art Tutorial festhalten, so das auch dritte etwas mit dem Niedergeschriebenen anfangen kann.
Vorbereitung
Die erste Frage die sich eigentlich stellt ist auf was für einen System man entwickeln möchte. Die Frage stellte sich für mich nicht, da ich natürlich unter Linux entwickeln möchte. Ich benutze Ubuntu und suchte für dieses einen geeigneten Editor. Als erstes dachte ich an Kdevelop, jedoch unterstützt dieses nicht „out of the box“ sdl. Eclipse wollte ich auch nicht, da ich dieses nicht mag und Eclips sehr recourcent fressend ist. Irgend wann bin ich dann auf CodeBlocks gestoßen, was es sowohl als Linux als auch als Windows-Version gibt.

Die Installation unter Ubuntu ist denkbar einfach:
sudo apt-get install codeblocks
Nun müssen wir noch die SDL-Libs installieren, was unter Ubuntu so geht:
apt-get install libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev
Jetzt sind wir schon bereit für unser erstes SDL Programm.
Lektion 1
In dieser Lektion sagen wir der Welt mit einen kleinen Bild hallo.
Als erstes fügen wir die nötigen SDL-Header ein
#include "SDL/SDL.h"
Nun deklarieren wir als erstes in unserer Main-Funktion, die benötigten Oberflächen, in SDL Surface genannt. Wir breuchen zu einen ein Fenster und ein Bild was wir im Fenster anzeigen
int main( int argc, char* args[] )
{
// Das Hallo Bild
SDL_Surface* hallo = NULL;
// Das Fenster in dem das Bild angezeigt werden soll
SDL_Surface* fenster = NULL;
Mit SDL_Init() initalisieren wir SDL, mit SDL_INIT_EVERYTHING geben wir an das wir jedes Subsystem, wie Audio, Vidio usw. starten und verwenden möchten.
//Initialisieren von SDL SDL_Init( SDL_INIT_EVERYTHING );
Im nächsten Schritt setzen wir die Attribute für unser Fenster mit SDL_SetVideoMode. Das erste Attribut gibt die Breite des Fensters an, das zweite Attribut die Höhe, das dritte die Farbtiefe und das vierte setzt das Fenster im Speicher.
//Fenster Konfigurieren fenster = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );
Jetzt laden wir unser Bild:
//Bild laden hallo = SDL_LoadBMP( "hallo.bmp" );
Mit SDL_BlitSurface schieben wir unser Bild auf das Fenster. Das erste Argument enthält das Bilder und das dritte Argument ist das Zielfenster:
//Bild auf dem Fenster anzeigen SDL_BlitSurface( hallo, NULL, fenster, NULL );
Damit auch wirklich was angezeigt wird, müssen wir das Fenster aktualisieren, wenn wir das nicht tun, sehen wir nur ein schwarzes Bild.
//Anzeige aktualisieren SDL_Flip( fenster );
Nun wird unser Bild schon angeigt, jedoch nur ganz kurz, damit wir was sehen pausieren wir unser Programm für 3 Sekunden (angegeben die tausendstel Sekunden).
//Pause SDL_Delay( 3000 );
Damit wir unser Bild nicht nach dem Programm ende im Speicher lassen, geben wir den Speicher wieder frei:
//Bildspeicher freigeben SDL_FreeSurface( hallo );
SDL_Quit beendet SDL und gibt auch den Speicher für unser Fenster frei:
//SDL beenden SDL_Quit(); return 0; }
So das war es dann auch schon, fertig ist unser erstes SDL-Programm.