Mai 012013
 

k4l7b1 k4l7b2 k4l7b3 k4l7b4 k4l7b5

Es ist nun schon einige Zeit her, dass ich das letzte mal eine Lektion veröffentlicht habe. Ich hatte kleine Schwierigkeiten mit meinem Code und konnte diese nicht lösen. Mittlerweile habe ich alle Probleme beseitigt und das Spiel läuft.

In dieser Lektion werden wir in 5 Schritten ein Android Spiel entwickeln, als Basis nehmen wir unser Roboter Spiel aus dem Kapitel 2 und 3. Obwohl ich euch zeige, wie ihr ein Spiel portiert, kann diese Anleitung auch dazu verwendet werden ein komplett neues Spiel zu programmieren.

Portieren kann so einfach sein!

Glücklicherweise kann fast der komplette Code, welchen wir in Kapitel 2 und 3 entwickelt haben, nach Android übersetzt werden. Das bedeutet wir können ihn einfach kopieren und einfügen. Ausnahmen bestätigen die Regel, hier ist es genauso. Die Rectangle Klasse zum Beispiel, aber das ist alles kein Problem. Wir haben neue Klassen die diese Aufgaben übernehmen.

Download des Gründgerüst

Falls einer hier einsteigen möchte oder nicht den ganzen Code abtippen möchte, habe ich hier das Projekt exportiert und ihr könnt diesen bei euch einfügen. Unter der Kategorie Eclipse und Import und Export habe ich erläutert wie ihr dies macht.

AndroidSpielGrundgerüst

 Erstellen des Spiels und Umbenennung des Paketes

Wir haben nun die com.basteldroid.framework und das com.basteldroid.framework.implementation Pakete, hier werden wir nun noch ein weiteres Paket erstellen, dass com.basteldroid.robotgame. Falls ihr eure Pakete umbenennen wollt, geht das unter recht klick auf das Paket und Refactor –> Rename.

k4l7b6

Wir haben nun den folgenden Stand:

1. Das Interface com.basteldroid.framework

2. Die Implementationen des Interface com.basteldroid.framework.implementation

3. Der Spiel Code com.basteldroid.robotgame

Spiel Entwicklung

Grundeinstellung

Als erstes öffnen wir die AndroidGame Klasse und ändern die Bildschirmauflösung, dazu wählen wir das folgende aus:
int frameBufferWidth = isPortrait? 480: 800;
int frameBufferHeight = isPortrait? 800: 480;

Denkt daran wofür das ? steht und was es damit auf sich hat!

Nun werden wir mit dem Programmieren beginnen. Denkt dran das unser Spiel nur eine Aktivität hat. Normalerweise haben Apps, immer wenn man eine neue Seite öffnet, auch eine neue Aktivität. Wir werden aber bei einer Aktivität bleiben, die immer wieder nur geändert wird. Daher haben wir es wesentlich einfacher mit der Integration von Musik, Dateien und und und.

Die folgenden Klassen benötigen wir:

Spiel Unabhängige Klassen (Erforderlich für die meisten Spiele, in diesem Framework erstellt)

Assets Klasse – ordnet Bezugsgrößen auf alle Assets (Bilder / Audio), die in unserem Spiel verwendet werden.

SplashLoadingScreen & LoadingScreen – Erstere wird verwendet, um das Hintergrundbild des Startbildschirms zu laden, und in der LoadingScreen werden wir dieses geladene Bild anzeigen, während wir jeden anderen Bild / Audio-Datei im Spiel laden.

Menu Screen – Gebraucht, um das Spiel zu starten.

Spielbildschirm – Hier wird sich das ganze Spiel abspielen, diese Klasse ist ähnlich der StartingPoint Klasse.

SampleGame – Die Aktivität-Klasse wird gestartet beim Start des Spiels und öffnet unsere App.

RobotGame Klassen (Kopiert aus den Kapiteln 2 und 3)
Animation
Background
Enemy
Heliboy
Projectile
Robot
Tile

Das sind nun alle Klassen, welche wir für unser Spiel benötigen. Als erstes benötigen wir aber noch ein paar Dateien.

Download der Dateien

assets_raw

Entpackt diese Datei und kopiert alles im assets Ordner in den dazugehörigen assets Ordner in eurem Projekt. Der raw Ordner wird direkt in den res Ordner kopiert. Dies muss genau so ausgeführt werden, da sonst unser Spiel abstürzt.

1. SampleGame Klasse

Diese SampleGame Klasse erweitert die AndroidGame Klasse , welche wiederum die Aktivität erweitert. Also haben wir hier eine Aktivität.

1. getInitScreen()-Methode überprüft, ob es das erste mal ist, dass diese Klasse geöffnet wir. Wenn es das erste Mal ist, die die Load()-Methode innerhalb der Assets Klasse aufgerufen, welche die Musik lädt. Dies erlaubt uns die Musik zu handhaben, ohne das wir mehrere Instanzen von Hintergrund Musik benötigen. Hier rufen wir auch unsere Mappe auf, die ihre Informationen aus der map1.txt zieht.

Danach werden wir auf den SplashLoadingScreen geschickt, der erste Bildschirm beim Start unseres Spiels, mehr dazu nachher.

2. onBackPressed()-Methode überschreibt die normale Aktion die passiert wenn der Zurück Button gedrückt wird. So das immer genau das geschieht, was wir hier programmieren.

3. convertStreamToString() hier wird die .txt Datei genommen und in eine String umgewandelt.

4. onResume() und onPause() diese beiden im Android Lebenszyklus aufgerufen. Falls ihr nicht mehr wisst, wofür diese da sind, geht bitte ein paar Lektionen zurück.

2. Assets Klasse

Hier werden alle Assets geladen die unser Spiel benötigt und die Hintergrund mit einer Lautstärke von 85% abgespielt.

3. SplashLoadingScreen Klasse

Da dies eine Unterklasse der Screen Superklasse ist, müssen wir hier alle Screen Methoden aufrufen. Wir haben hier die update()-Methode, wo wir das erste Bild als RGB565 laden. Wisst ihr noch was das bedeutet? Wenn nun unser splash.jpg geladen ist, gehen wir direkt in die …

4. LoadingScreen Klasse

Diese Klasse ist fast die Selbe, wie die Klasse zuvor. Hier werden nur wesentlich mehr Bilder geladen. So lange es dauert, diese Bilder zu laden, solange wird die paint()-Methode ausgeführt und unser splash.jpg angezeigt.

Wenn das Laden fertig ist, wird die MainMenuScreen Klasse geöffnet. Wenn ihr mal genau schaut, ist die backButton()-Methode in den letzten beiden Klassen leer gewesen. Wir wollen nicht das der Benutzer hier auf zurück drückt und unseren Ladevorgang unterbricht, daher sind diese leer.

5. MainMenuScreen Klasse

In dieser Klasse zeigen wir das Menübild an. Wenn der Benutzer nun den Play Button drückt, öffnet sich die GameScreen Klasse. Wenn der Benutzer auf den Zurück Button drückt, wird das Spiel beendet.

k4l7b3

6. GameScreen Klasse

Diese Klasse können wir mit der StartingClass aus dem Kapitel 2 und 3 vergleichen. Die Fehler ignorieren wir erst einmal.

Der meiste Code sollte verständlich sein und auch bekannt. Wir erstellen verschiedene GameStates (Spielstände) die aufgerufen werden in der update() und paint()-Methode, daher müssen wir dafür nicht noch mehr Klassen erstellen und wir können auf die verschiedenen Spielstände eingehen.

Wir rufen  nullify auf, hier setzen wir alles auf 0, jede Variable. Dadurch verhindern wir Duplikate und unser Speicher wird geschohnt.

Nun haben wir die 6 Basis Klassen erstellt und wir kopieren unsere 7 Spiele Klassen, mit ein paar Änderungen, in unser Spiel. Die größten Änderungen sind:

Image class – hier werden wir nicht die Bilder der Java Library nutzen, sondern die aus unser Image Klasse
Rectangle class – hier ersetzen wir die Java Rectangle mit der Android Rect Klasse.

Ansonsten wird sich nur wenig an unserem Code ändern. Hier sind nun unsere 7 Spiel Klassen:

1. Animation Klasse

2. Background Klasse

3. Enemy Klasse

4. Heliboy Klasse

5. Robot Klasse

6. Projectile Klasse

7. Tile Klasse

Unser Spiel sollte nun wie folgt aussehen:

k4l7b7

Nun müssen wir nur noch das AndroidManifest bearbeiten und unsere Berechtigungen einstellen.

AndroidManifest

icon

Dieses Bild müsst ihr nun herunterladen und in den drawable-hdpi Ordner kopieren.

Wir werden nun 3 Berechtigungen einfordern, WakeLock, Externer Speicher und Vibration.

In dem Aktivity Teil, müssen alle Aktivitäten vermerkt werden, bei uns also nur die SampleGame.

Hier können wir den Namen unseres Spiels einstellen, die Tastatur verschwinden lassen und die Bildschirmausrichtung einstellen.

Mit dem intent Filter können wir die .SampleGame Aktivität als Hauptaktivität einstellen.

Wenn ihr nun das Spiel startet, könnt ihr euer erstes selbst programmiertes Spiel spielen.

Damit sind wir am Ende unserer Anleitung, aber keine Angst, damit sind wir noch lange nicht am Ende dieses Blocks. Wir werden in der nächsten Zeit noch einiges lernen. Wie veröffentlichen wir Spiele im Google Play Store, wie erstellen wir mehrere Level und und und.

Die nächste Anleitung wird sein, wie Programmieren wir unsere eigene App und wie halten wir diese immer auf dem neuesten Stand. Es steht also noch viel vor uns und ich hoffe das ihr weiter treu mit lernt.

Falls ihr Fragen habt, immer raus damit, ich helfe euch sehr gerne. Hinterlasst bitte einfach einen Kommentar.

Teilt diese Seite mit euren Freunden und besucht uns mal auf Facebook und auf Google+, dass würde dieser Seite wirklich weiterhelfen, Danke sehr. Oder ein Klick auf die Werbung, hilft dabei diese Seite am laufen zu halten.

Source Code

Falls einer hier einsteigen möchte oder nicht den ganzen Code abtippen möchte, habe ich hier das Projekt exportiert und ihr könnt diesen bei euch einfügen. Unter der Kategorie Eclipse und Import und Export habe ich erläutert wie ihr dies macht.

RoboterSpiel

Quelle: Original Anleitung auf englisch von Kilobolt Studios

Lektion 6 – Grundgerüst eines Android Spiels Teil 2 Lektion 8 - Speichern und Laden von Spielständen