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.

codeblocks.png

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.

bild1-lektion1.png

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.