Ein Spiel mit der SDL - Teil I
Ein Spiel mit der SDL kostenlose Bibliothek – Simple DirectMedia Layer Grafik darstellen Benutzereingaben abfragen Sounds und Musik abspielen plattformunabhängig Verwendetes Beispiel aus Kalista: C++ für Spieleprogrammierer
Einrichten des Projektes Headerdateien einbinden (include) Bibliotheksdateien einbinden (lib)
Einrichten des Projekts Explizite Angabe der Bibliotheksdateien Codeerstellung
Ein Spiel mit der SDL Spaceinvaders light Asteroiden fallen vom oberen Bildschirmrand nach unten Der Spieler steuert ein Raumschiff bewegt sich horizontal am unteren Bildschirmrand feuert auf die Asteroiden trifft ein Schuß einen Asteroiden, wird dieser zerstört
Ein Spiel mit der SDL
TSingleton CTimerCFramework CGame CPlayer CShot CAsteroids CSprite
Die Klasse CTimer Zeitgeber zur Realisierung einer gleichförmigen Bewegung unabhängig der Rechnergeschwindigkeit misst die Zeit zwischen den Frames vergangene Zeit seit dem letzten Frame dient als Skalierung Speichert die Zeit des letzten Frames Berechnet die vergangene Zeit
Die Klasse CFramework Grafik auf den Bildschirm bringen Tastatureingaben verwalten Verwaltung der SDL Initialisierung eines Ausgabebereiches für die Grafik (Surface) SDL_SetVideoMode ○ Höhe, Breite, Farbtiefe ○ Verwaltung im Videospeicher (SDL_HWSURFACE) ○ Doublebuffering (SDL_DOUBLEBUF) ○ Vollbild (SDL_FULLSCREEN)
Die Klasse CFramework Update in jedem Gameloop Update des Timers Ermitteln des Zustandes der Tastatur Abfrage gedrückter Tasten Löschen des Grafikpuffers Umschalten der Surface (flip) Beenden der SDL
Doublebuffering und Flipping Im Speicher werden 2 Surfaces (Zeichnungsfläche) gehalten gezeichnet wird in die Surface, die gerade nicht angezeigt wird (Backbuffer) Umschalten zwischen Backbuffer und angezeigter Surface nach dem Rendern Funktioniert nur bei Verwendung vom Videospeicher
Ein Spiel mit der SDL TSingleton CTimerCFramework CGame CPlayer CShot CAsteroids CSprite
Die Klasse CSprite Sprite: kleine, rechteckige Grafik, die auf dem Bildschirm angezeigt wird Laden der Grafik Positionierung des Sprites Transparente Farbe festlegen Sprite auf den Bildschirm zeichnen Verwaltung von animierten Sprites
Animierte Sprites Sprite in mehreren Zuständen in einem Bild Darstellung eines bestimmten Ausschnittes (Frame) Zusätzliche Daten Höhe und Breite eines Frames Anzahl der Frames Sprite wird unter Angabe des aktuellen Frames gerendert
Ein Spiel mit der SDL Definition der Spielobjekte Spieler (Raumschiff) Asteroiden Schüsse Verwaltung der Spielobjekte von der Klasse CGame Schüsse werden von der Spielerklasse verwendet CGame kümmert sich außerdem um die Spiellogik
Die Klasse CShot Darstellung der Schüsse des Raumschiffes Einmaliges Laden des zugehörigen Bild Zeiger auf den Sprite wird jeder CShot-Instanz übergeben Speicherung der Position in jeder Instanz Vor dem Zeichnen wird das Sprite auf die jeweilige Position verschoben Lebenszyklus von CPlayer verwaltet Schuß bewegen, Position prüfen Schuß anzeigen
Die Klasse CAsteroid Darstellung der Asteroiden Äquivalent zur Klasse CShot Asteroiden sind animiert inkrementieren der Animationsphase (nicht nach jedem Loop!)