Avec la puissance de traitement avec les appareils mobiles d'aujourd'hui et en particulier les téléphones mobiles, vous pouvez-avec un peu d'effort, de la patience et désireux-mise en œuvre de jeux intéressants en Java pour les téléphones cellulaires.
La «cellule» d'aujourd'hui est comme un ordinateur avec beaucoup de périphériques intégrés, y compris un appareil photo, clavier, écran, téléphone cellulaire, un lecteur de carte mémoire externe carte, wifi, gps, gsm, etc Et tout cela dans la paume de votre main.
Certains de ces appareils mobiles apportent des systèmes d'exploitation propriétaires, d'autres utilisent une version de Windows, Linux ou Symbian OS. Mais il est une caractéristique que la plupart ont en commun: Java. Bien sûr que non la version pleine puissance de Java qui est installé sur notre ordinateur de bureau, ordinateur portable ou un serveur. Il s'agit d'une version adaptée aux terminaux mobiles, dans lequel il n'y a pas un gigaoctet de RAM, ou multi-processeurs avec des fréquences d'horloge de l'ordre de Giga Hetrz.
Étonnamment, Java Micro Edition (JME, AKA J2ME) a des caractéristiques qui le rendent une plateforme très intéressante pour développer des applications et en particulier les jeux. Et ceux-ci sont ce que nous allons explorer.
D'abord un peu de théorie
Compte tenu du nombre d'appareils mobiles, le tout avec différentes caractéristiques ont été inventés les "profils de compétences" pour MIDP Informations sur le profil des périphériques mobiles. Selon la version du MIDP, le dispositif aura des compétences plus ou moins: la communication, la présentation, audio, etc.
Outre MIDP, il ya une autre spécification appelée pour CLDC Configuration Connected Device Limited, qui définit le faible niveau des capacités de l'appareil, par exemple, si vous avez la possibilité de gérer nombre à virgule flottante.
Est basé sur CLDC MIDP pour former la plate-forme Java ME. L'idée est de développer sur la plate-forme plus compatible que possible. Aujourd'hui, la plupart des téléphones prennent en charge MIDP 2.0 et CLDC 1.1, mais si nous nous limitons à une meilleure CLDC 1.0. Le Motorola V360 est un exemple de la téléphonie mobile avec MIDP 2.0 et CLDC 1.0.
Puis, quand nous commençons à développer, nous devons choisir quelle version de MIDP et CLDC allez utiliser. Sur l'Oracle (http://java.sun.com/javame/technology/index.jsp), vous pouvez trouver plus d'informations et le SDK (http://java.sun.com/javame/downloads/index. jsp).
Eh bien, nous avons le SDK installé, nous avons notre confiance IDE configuré. Maintenant quoi? Pour planifier! Eh bien, pas si vite. Comment programmer un jeu? C'est quelque chose que nous avons fait ça depuis des années il ya, nous n'avons pas très clair. L'Internet est un beaucoup de documentation, mais la bonne vraiment est rare.
Tout d'abord, nous allons voir est le squelette d'un jeu de pseudo--in:
entrée du processus utilisateur mettre à jour l'état du jeu dessiner l'écran goto 1
Patron d'ordinateurs, désolé pour le goto.
Il n'y a rien révéler dans ces 4 lignes, mais que faire si vous pouvez commencer à voir certains problèmes. Par exemple, ce jeu se déroulera à des vitesses différentes en fonction de la puissance de la cellule. Quelque chose évidemment pas souhaitable. Évidemment, nous voulons que notre jeu à travailler à la même vitesse sur n'importe quel téléphone, indépendamment de la puissance nominale.
Pour cela, nous faire un petit changement:
entrée du processus utilisateur mettre à jour l'état du jeu dessiner l'écran attendre millisecondes X goto 1
Maintenant variable X, on peut faire varier la vitesse du jeu. Facile ... pas vrai? Incombe à l'utilisateur de choisir X, par exemple, le menu du jeu. Mais X ne pouvait pas être déterminé automatiquement? Mieux encore, comment X n'a pas pu être déterminée de façon dynamique à chaque tour du cycle? Bien sûr. Maintenant, nous voyons:
ciclos_por_segundo = 30 milisegundos_por_ciclo = 1000 / ciclos_por_segundo t_inicial = now () entrée du processus utilisateur mettre à jour l'état du jeu dessiner l'écran t_ciclo = maintenant () - t_inicial si (t_ciclo <milisegundos_por_ciclo) puis attendre (milisegundos_por_ciclo - t_ciclo) millisecondes goto 3
Remarque: La fonction now () retourne l'heure courante en millisecondes, ce qui en fait quelque chose comme System.currentTimeMillis () en Java.
Qu'est-ce que vous faites est, prenez le temps qu'il faut un cycle complet (4, 5 et 6). Si ce moment est inférieure à la quantité de temps, nous avons établi pour chaque cycle 1 et 2, alors nous espérons que la différence de temps. Ainsi, tous les cycles le même délai et le temps d'attente est ajusté dynamiquement.
De cette façon, nous effectuons ainsi que entre le pouvoir cellule différente. Cette méthode peut être améliorée par la mise en œuvre des cycles de pauses (saut d'image) lorsque la cellule est très faible puissance, mais nous courons le risque que le jeu devient injouable. Ainsi, le jeu fonctionnera plus lentement dans les cellules de faible puissance, et que tout le temps sera consommé dans les paragraphes 4, 5 et 6 et de ne jamais entrer en mode veille.
C'est incroyable de voir combien de choses intéressantes qui peuvent être fait en utilisant cette technique simple.
Une pratique
Nous mettrons en oeuvre cette technique, le "Bonjour tout le monde" des jeux: Pong, un par un.
C'est comme un Arkanoid, mais sans les briques. Certes, pas beaucoup s'amuser.
La mise en œuvre de Java de la boucle principale ressemble à ceci:
CICLOS_POR_SEGUNDO final int = 30; MILISEGUNDOS_POR_CICLO final int = 1000 / CICLOS_POR_SEGUNDO; while (true) { à long tInicial = System.currentTimeMillis (); procesarEntradaDelUsuario (); actualizarEstadoDelJuego (); dibujarLaPantalla (); à long tcycle = System.currentTimeMillis () - tInicial; si (tcycle <MILISEGUNDOS_POR_CICLO) { Thread.sleep (MILISEGUNDOS_POR_CICLO - tcycle); } }
Notez que rien jusqu'à présent n'a été fait en particulier pour le PONG. Il sera en particulier les fonctions procesarEntradaDelUsuario (), actualizarEstadoDelJuego () et dibujarLaPantalla ().
Le premier est chargé de prendre quelque chose de l'entrée d'utilisateur et le changement dans le jeu, dans ce cas serait la position de la palette. Oui, la palette est le rectangle vert .. doit avoir de l'imagination
Le second doit mettre à jour l'état interne de la partie. Dans ce jeu, cette fonction a deux objectifs: a) de déplacer la balle et b) si la balle tombe en panne, puis le jeu se termine avec le fatidique "Game Over".
La fonction de la troisième et dernière, vous devez prendre l'état du jeu et dessiner sur l'écran.
Le code source peut être téléchargé ici: pong-scr.tar . Dans cette mise en œuvre, n'est jamais perdu. Lorsque la balle tombe en panne, apparaît de nouveau dans le milieu de l'écran. Un bon exercice serait ajouter la vie, pour augmenter la vitesse de la balle, ce qui donne une accélération à la palette, améliorer les graphismes, ajouter des briques, des sons, pour n'en nommer que bonus et de la commercialisation (pas Arkanoid, clair
) Et puis, la gloire!
Amusez-vous!

