Bequemer als Backup Bequemer als Backup - Wuala
Bequemer als Backup Bequemer als Backup - Wuala
Bequemer als Backup Bequemer als Backup - Wuala
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Know-how | Spieleprogrammierung mobil<br />
Gerhard Völkl<br />
Play mobil<br />
Handy-Spiele mit Java ME selbst gemacht<br />
Neben Klingeltönen mit knatternden Fröschen<br />
oder heulenden Bärchen sind Spiele die beliebtesten<br />
Downloads für Mobiltelefone. Mit ein paar Java-<br />
Grundkenntnissen und dem kostenlosen „Java<br />
Wireless Toolkit“ (WTK) von Sun kann jeder seine<br />
eigene Spielewelt für die Westentasche erschaffen.<br />
Die 1,85 Milliarden Java-fähigen<br />
Handys weltweit<br />
sind eine der größten<br />
Spieleplattformen überhaupt [1].<br />
Branchenriesen wie Nintendo<br />
oder Sony würden sich bei ihren<br />
Spielekonsolen über solche Verkaufszahlen<br />
freuen. Wenn sich<br />
jemand entschließt, ein neues<br />
Spiel für eine Konsole zu entwickeln,<br />
wird er nicht ohne Weiteres<br />
an ein kostenloses Entwicklerpaket<br />
herankommen. Im Mobiltelefonbereich<br />
ist es wie bei<br />
anderen Java-Plattformen auch:<br />
Hier gibt es von Sun ein freies<br />
Softwarepaket, das „Java Wireless<br />
Toolkit“ (WTK), das vom<br />
Compiler über die Bibliotheken<br />
bis hin zum Debugger alles enthält,<br />
was zur Programmerstellung<br />
notwendig ist [2]. Einfacher<br />
geht es natürlich mit einer integrierten<br />
Entwicklungsumgebung<br />
wie zum Beispiel NetBeans<br />
(siehe Kasten auf S. 200).<br />
Irgendwann einmal ist Java<br />
mit dem großen Schlagwort<br />
„WORA” (Write Once, Run Anywhere<br />
– „Einmal schreiben, läuft<br />
überall“) angetreten. Doch in der<br />
Realität zeigte sich, dass etwa ein<br />
Java-Programm, das für einen<br />
Multiprozessor-Server geschrieben<br />
wurde, nicht unbedingt auf<br />
einem Handy mit wenigen Kilobyte<br />
Speicher läuft. Deshalb gibt<br />
es für kleine Geräte wie Mobiltelefone<br />
eine spezielle Ausgabe:<br />
Java ME (Mobile Edition), die<br />
ganz kleine Schwester von Java<br />
SE für den Desktop und Java EE<br />
für den Unternehmensserver.<br />
Java ME enthält die gleiche Programmiersprache<br />
wie die anderen<br />
Ausgaben, nur leicht abgespeckt.<br />
Der große Unterschied<br />
zeigt sich in den Bibliotheken, die<br />
für die Bedürfnisse der kleinen<br />
Geräte optimiert sind.<br />
Da die Milliarden existierenden<br />
Java-Handys von den verschiedensten<br />
Herstellern in einer<br />
nicht überschaubaren Typenvielfalt<br />
produziert wurden, ist nicht<br />
sichergestellt, dass ein Programm<br />
mit bestimmten Anforderungen<br />
wirklich auf jedem<br />
dieser Geräte läuft. Wie im Java-<br />
Bereich üblich, haben Arbeitskreise<br />
Spezifikationen für Klassen,<br />
Methoden und so weiter<br />
(Java Specification Requests –<br />
JSRs) festgelegt [3]. Für das Spiel<br />
in diesem Artikel genügen die<br />
folgenden Spezifikationen:<br />
–ˇJSR 139 – Connected Limited<br />
Device Configuration (CLDC) 1.1<br />
–ˇJSR 118 – Mobile Information<br />
Device Profile (MIDP) 2.0<br />
Nur auf Handys, die diese erfüllen,<br />
funktioniert es auch. Diese<br />
Angaben sollten Sie in der Gebrauchsanleitung<br />
zu Ihrem Gerät<br />
finden.<br />
Ziel dieses Artikels ist, ein einfaches<br />
Handy-Spiel zu entwickeln.<br />
Ein einsamer Fisch namens<br />
Freddy muss um alle möglichen<br />
Hindernisse herumschwimmen,<br />
Punkte sammeln und den<br />
Schlüssel zum nächsten Level finden.<br />
Zugegeben, das kommt<br />
einem irgendwie bekannt vor.<br />
Spiel-Film<br />
Ein Actionspiel ist im Grunde genommen<br />
nichts anderes <strong>als</strong> ein<br />
interaktiver Film. Das Programm<br />
zeichnet möglichst oft ein Bild<br />
auf das Display, damit der Eindruck<br />
einer Bewegung entsteht,<br />
und reagiert in der Zwischenzeit<br />
auf die Eingaben des Spielers,<br />
aus denen es zum Beispiel die<br />
neue Position der Spielfiguren<br />
berechnet. Aus diesem Ablauf<br />
ergibt sich eine einfache Grundstruktur,<br />
die klassische Spieleschleife:<br />
Solange Spiel nicht zu Ende:<br />
- aktualisiere das Spielgeschehen unter<br />
Einbeziehung der Eingaben des<br />
Spielers (Update)<br />
- zeichne ein neues Bild auf das<br />
Display (Render)<br />
Da in Java ohne eine Klasse nichts<br />
geht, ist die Schleife in der Klasse<br />
MobileFishCanvas untergebracht. Diese<br />
eigene Klasse ist von GameCanvas,<br />
einer Standardklasse des Java ME<br />
Game API, abgeleitet. Aus dieser<br />
Bibliothek (javax.microedition.lcdui.<br />
game.*) stammen die meisten in<br />
diesem Artikel verwendeten Klassen,<br />
da sie einen Großteil der für<br />
einfache Spiele benötigten Funktionen<br />
realisiert.<br />
Die Klasse GameCanvas repräsentiert<br />
eine von der konkreten<br />
Hardware unabhängige Ausgabefläche<br />
und bringt alle später<br />
benötigten grundlegenden Ausgabemöglichkeiten<br />
mit. Sie bildet<br />
den Rahmen für die Spieleschleife,<br />
die möglichst ungestört<br />
in einem eigenen Programmstrang<br />
(Thread) laufen sollte.<br />
In einem Mobiltelefon können<br />
gleichzeitig alle möglichen Sa-<br />
198 c’t 2008, Heft 20<br />
©<br />
Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags.