C++ und SDL2 – Movement

Ich habe ja bereits vor längerer Zeit einen kleinen Artikel zur Spieleprogrammierung geschrieben und will heute mal etwas Code vorstellen.
Ich bin mir bewusst, dass es wahrscheinlich noch um einiges einfacher und schlanker geht. Trotzdem will ich den Code einfach mal präsentieren um mal eine Grundlage zu schaffen und vielleicht auch ein Paar Tipps zu bekommen.

Damit ihr den Code so verwenden könnt, benötigt ihr die SDL 2 Library und irgendeinen C++ Kompiler.

Ich habe den Code zur Zeit direkt in meinem GameLoop umgesetzt. Wir fangen mal mit den Variablen an, die ich dafür definiert habe.

Für jede Richtung wird ein Boolean definiert. Die Variable timeCheck benötige ich, um am Ende wieder stehen zu bleiben. Als nächstes habe ich eine Switch-Case Anweisung geschrieben, in der wiederum zwei Switch-Case Anweisungen aufgerufen werden.

In der Hauptanweisung wird geprüft, ob eine Taste gedrückt ist oder nicht. Je nach Zustand wir eine der beiden Verschachtelten Anweisungen aufgerufen.

In der KEYDOWN Anweisung wird geprüft welche Taste gerade gedrückt wird. Ich habe hier nur w-a-s-d definiert, da ich erstmal nur diese vier Tasten benötige. Wenn eine der Tasten gedrückt wird, dann wird die entsprechende Variable auf true gesetzt und die Unteranweisung verlassen.
Wir die Taste nun losgelassen, dann geht es in die zweite Unteranweisung (KEYUP). Hier wird dementsprechend dann die Variable wieder auf false gesetzt, damit die Bewegung gestoppt werden kann.

Jetzt habe ich noch den Code für die eigentliche Bewegung. Dafür habe ich ganz einfache If-Anweisungen verwendet.

Diese Abfrage wird quasi alle 10 Zeiteinheiten ausgeführt. Wenn die Variable true ist, wird der entsprechende Codeteil ausgeführt. Bei MoveRight und MoveLeft ist das plus oder minus 2 auf der X-Achse, bei MoveUp und MoveDown ist das plus oder minus auf der Y-Achse.

Der hier beschriebene Movement Code soll übrigens für die Bewegung bei eine 2D Spiele verwendet werden. Vielleicht erstmal einen Zelda oder Secret of Mana Klone oder doch direkt etwas eigenes. Das werde ich entscheiden, wenn ich die Grafiken erstelle bzw. erstellen lasse =) Ich denke aber, dass dieser Aufbau auch für Jump and Run Games gut genutzt werden kann. Dadurch das ich hier eine eigene If-Anweisung für jede Bewegungsrichtung habe, lässt sich diese auch recht leicht Manipulieren (denke ich zumindest).

Ich hoffe mal das der Quellcode einigermaßen nachvollziehbar ist. Habe bisher noch nicht oft Quellcode erklären müssen, aber Übung macht den Meister =)

About Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Speak Your Mind

*