Mit der Rechenleistung mit mobilen Geräten heute und insbesondere Mobiltelefone, können Sie mit ein wenig Mühe, Geduld und begierig implementieren interessante Spiele in Java für Mobiltelefone.
Die "Zelle" von heute ist wie ein Computer mit vielen Peripheriegeräten integrierte Kamera, Tastatur, Bildschirm, Handy, externen Kartenleser, WiFi, GPS, GSM, etc. Und das alles in der Handfläche.
Einige dieser mobilen Geräte zu bringen proprietären Betriebssystemen, andere verwenden eine Version von Windows, Linux oder Symbian OS. Aber es ist ein Merkmal, dass die meisten gemeinsam haben: Java. Offensichtlich nicht die volle Leistung Java-Version, die auf unseren Desktop, Laptop oder Server installiert ist. Dies ist eine Version für mobile Geräte, die keinen Gigabyte RAM und mehreren CPUs mit Taktfrequenzen in der Größenordnung von Giga Hetrz angepasst.
Überraschenderweise hat Java Micro Edition (JME, AKA J2ME) die Merkmale, dass es eine sehr interessante Plattform, um Anwendungen und vor allem Spiele zu entwickeln zu machen. Und die letzteren sind diejenigen, die gehen zu erkunden sind.
Zunächst ein wenig Theorie
Angesichts der Zahl von mobilen Geräten mit unterschiedlichen Eigenschaften-all-werden erfunden "Kompetenzprofile" für MIDP Mobile Information Device Profile. Je nach Version MIDP, wird das Gerät mehr oder weniger Fähigkeiten: Kommunikation, Präsentation, Audio, etc..
MIDP Darüber hinaus gibt es eine andere Spezifikation als CLDC Connected Device Configuration Begrenzte für, die Low-Level-Fähigkeiten des Geräts definiert, zum Beispiel, wenn Sie die Fähigkeit haben, Gleitkommazahl Griff.
Basiert auf CLDC MIDP der Java ME Plattform zu bilden. Die Idee ist, mehr kompatible Plattform wie möglich zu entwickeln. Heute unterstützen die meisten Handys MIDP 2.0 und CLDC 1.1, aber wenn wir beschränken uns auf CLDC 1.0 besser. Das Motorola V360 ist ein Beispiel für Handys mit MIDP 2.0 und CLDC 1.0.
Dann, wenn wir zu entwickeln beginnen, müssen wir entscheiden, welche Version von MIDP-und CLDC verwenden wollen. Oracle auf der Seite (http://java.sun.com/javame/technology/index.jsp), finden Sie weitere Informationen und die SDK (http://java.sun.com/javame/downloads/index. jsp).
Nun, wir haben das SDK installiert haben, vertrauen wir unseren IDE konfiguriert. Und was jetzt? So planen! Na ja, nicht so schnell. Wie programmiert man ein Spiel? Dies ist etwas, was wir bisher getan haben IT seit Jahren haben wir keine sehr klar gewesen. Das Internet ist eine Vielzahl von Dokumentationen, aber die wirklich guten sind rar.
Zunächst einmal ist, werden wir sehen, das Skelett eines pseudo-game-in:
Verarbeiten von Benutzereingaben Update den Stand der Dinge Bildschirm zeichnen goto 1
Schutzpatron des Computers, sorry für die goto.
Es gibt nichts enthüllen in diesen 4 Zeilen, aber was, wenn du kannst sehen, beginnen einige Probleme. Zum Beispiel wird das Spiel mit unterschiedlichen Geschwindigkeiten in Abhängigkeit von der Leistung der Zelle führen. Etwas ist ganz offensichtlich nicht erwünscht. Natürlich wollen wir unser Spiel mit der gleichen Geschwindigkeit in jedem Handy laufen, unabhängig von der Leistung davon.
Dafür machen wir eine kleine Änderung:
Verarbeiten von Benutzereingaben Update den Stand der Dinge Bildschirm zeichnen Warten X Millisekunden goto 1
Jetzt unterschiedlichen X, können wir variieren die Geschwindigkeit des Spiels. Easy ... nein? Liegt bei dem Benutzer X von sich aus, zum Beispiel das Menü des Spiels. Aber X konnte nicht automatisch ermittelt werden? Besser noch, warum X nicht dynamisch an jeder Ecke des Zyklus bestimmt werden? Sure. Jetzt sehen wir:
ciclos_por_segundo = 30 milisegundos_por_ciclo = 1000 / ciclos_por_segundo t_inicial = now () Verarbeiten von Benutzereingaben Update den Stand der Dinge Bildschirm zeichnen t_ciclo = now () - t_inicial if (t_ciclo <milisegundos_por_ciclo), dann wait (milisegundos_por_ciclo - t_ciclo) Millisekunden goto 3
Hinweis: Die Funktion now () gibt die aktuelle Zeit in Millisekunden, so etwas von System.currentTimeMillis () in Java getan.
Was Sie tun ist, nehmen Sie die Zeit, die eine volle Periode (4, 5 und 6). Wenn diese Zeit ist weniger als die Menge der Zeit, dass wir für jeden Zyklus 1 und 2 eingerichtet, so dass wir erwarten, dass dieser Unterschied in der Zeit. Daher sind alle gleich und Verzögerungszyklen Wartezeit dynamisch angepasst.
Auf diese Weise führen wir auch zwischen verschiedenen Power-Cell. Diese Methode kann durch die Implementierung bricht Zyklen (Frame Skipping), wenn die Zelle sehr geringer Leistung verbessert werden, aber wir laufen Gefahr, dass das Spiel unspielbar wird. So starten Sie das Spiel langsamer in Low-Power-Zelle, und die ganze Zeit wird in den Absätzen 4, 5 und 6 konsumiert werden und nie in den Standby.
Es ist erstaunlich, wie viele interessante Dinge, die getan werden können, mit dieser einfachen Technik.
Praktisch
Wir implementieren, mit dieser Technik, die "Hallo Welt" der Spiele: PONG nach dem anderen.
Es ist wie ein Arkanoid, aber ohne die Ziegel. True, nicht viel Spaß.
Die Java-Implementierung der Hauptschleife würde etwa so aussehen:
CICLOS_POR_SEGUNDO final int = 30; MILISEGUNDOS_POR_CICLO final int = 1000 / CICLOS_POR_SEGUNDO; while (true) { lange tInicial = System.currentTimeMillis (); procesarEntradaDelUsuario (); actualizarEstadoDelJuego (); dibujarLaPantalla (); lange tCiclo = System.currentTimeMillis () - tInicial; if (tCiclo <MILISEGUNDOS_POR_CICLO) { Thread.sleep (MILISEGUNDOS_POR_CICLO - tCiclo); } }
Beachten Sie, dass bisher gibt es nichts besonders für die PONG getan. Es wird besonders procesarEntradaDelUsuario Funktionen () sein, actualizarEstadoDelJuego () und dibujarLaPantalla ().
Die erste hat die Verantwortung, um Benutzereingaben zu nehmen und etwas zu verändern in dem Spiel, in diesem Fall würde die Position der Palette sein. Ja, das ist die Palette der grünen Rechteck .. müssen Phantasie haben
Der zweite muss aktualisiert den internen Zustand des Spiels. In diesem Spiel hat diese Funktion zwei Ziele: a) den Ball und b) wenn der Ball nach unten, dann endet das Spiel mit dem schicksalhaften "Game Over".
Die dritte und letzte Feature, müssen Sie den Zustand des Spiels und ziehen auf dem Bildschirm.
Der Quellcode kann hier heruntergeladen werden: Pong-scr.tar . In dieser Implementierung ist nie verloren. Wenn der Ball nach unten geht, erscheint wieder in der Mitte des Bildschirms. Eine gute Übung wäre es, das Leben hinzufügen, um die Geschwindigkeit des Balles zu erhöhen, wodurch die Beschleunigung auf der Palette zu verbessern Grafiken, fügen ladrillitos, Sounds, und benennen Sie es Powerups Vermarkter (nicht Arkanoid, klar
) Und dann, Ruhm!
Viel Spaß!

