Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuții   




Cartea de oaspeți   




Mesaje   





Agora   





Clic aici
PC Magazine





Soluții - PC Magazine Romania, Iunie 2004

Specificații pentru realizarea jocurilor în J2ME

Mircea Scărlătescu

Site-ul www.forum.nokia.com este plin cu documentație și cu tutoriale despre ce reprezintă și ce standarde s-au impus în industria software-ului Java pentru telefoane mobile.

Discutam în numerele trecute despre ceea ce înseamnă să realizezi un joc pentru un telefon mobil, cum diferă acest joc de un software normal, realizat pentru calculatoare personale sau console pentru jocuri. Astăzi încercăm să prezentăm un workflow recomandat, un șir de opțiuni și setări pe care mulți useri le folosesc, și pe care un program care se respectă nu trebuie să le scape din vedere.

Lansarea jocului, echivalentă cu pornirea MIDlet-ului, trebuie să fie urmată de un Spalsh Screen adică o instanță a clasei FullCanvas. Așadar prezentăm numele jocului, un logo pentru acesta etc. Acest Spash Screen este de multe ori întâlnit în jocurile de PC, mai ales în cele vechi. Desigur acest element de design trebuie să respecte cât mai bine regulile de dimensiune, adâncime a culorilor specifice telefoanelor mobile. Iată un exemplu de cod în acest sens:

public class GameMIDlet extends
MIDlet {
private Display display = null;
//Splash screen that starts the
application private SplashFull
Canvas splash;
public GameMIDlet()
{
splash = new
SplashFullCanvas(this);
}
protected void startApp() throws
MIDletStateChangeException {
if (display == null)
{
display = Display.getDisplay(this);
}
//splash screen to the display
setDisplayable(splash);
}
...

Orice joc urmează să aibă în mod obligatoriu după ecranul de prezentare un meniu. Opțiunile principale ce trebuie să se regăsească sunt "New Game" (joc nou), "Options" (Optiuni), "Instructions" (Instructiuni) etc. De asemenea, dacă jocul are o opțiune de pauză, în acel moment trebuie să existe și opțiunea de Continuare, care să apară prima în meniu. Desigur, meniul de mai sus este orientativ, și creativitatea ocupă aici un loc foarte important în a găsi cea mai bună soluție pentru a atrage jucătorul.

Ecranul principal al jocului va funcționa la selectarea opțiunii New Game.

Meniul de opțiuni trebuie să conțină elementele de bază pentru funcționarea telefonului (joc cu sau fără sunet, cu sau fără vibrații etc.). De asemenea, se pot insera opțiuni precum nivelul de dificultate, Ajutor, și așa mai departe. Orice joc va avea opțiuni specifice care trebuie inserate. Totodată o comandă Back trebuie implementată, pentru ca userul să se poată întoarce la meniul anterior sau la joc.

Un exemplu de clasă care implementează un meniu este următorul:

public class MainMenu extends List
   implements CommandListener 
   { 
   private GameMIDlet parent = null; 
   private GameFullCanvas game = null; 
   public MainMenu(String p0, int p1,
   String[] p2, Image[] p3, 
   GameMIDlet parent) 
   { 
   super(p0, p1, p2, p3); 
   init(parent); 
   } 
   public MainMenu(String p0, 
   int p1, GameMIDlet parent) 
   { 
   super(p0, p1); init(parent); 
   } 
   public void init(GameMIDlet parent) 
   { 
   this.parent = parent; 
   this.setCommandListener(this); 
   if (game != null && 
   game.isPaused()) 
   { 
   if(!(this.getString(0).equals
   ( new String(Resources.getString
   ( Resources.ID_GAME_CONTINUE))))) 
   { 
   this.insert(0, 
   Resources.getString(Resources.
   ID_GAME_CONTINUE), null); } 
   this.setSelectedIndex(0,true); 
   } 
   else 
   { 
   this.append(Resources.getString
   (Resources.ID_GAME_OPTIONS), null);
   this.append(Resources.getString
   ( Resources.ID_GAME_HIGHSCORES), 
   null); 
   this.append(Resources.getString
   ( Resources.ID_GAME_INSTRUCTIONS),
   null); 
   this.append(Resources.getString
   ( Resources.ID_GAME_ABOUT), null); 
   this.append(Resources.getString
   ( Resources.ID_GAME_EXIT), null); 
   } 
   } 

Opțiunea de High Scores este necesară atunci când se dorește memorarea unor scoruri record pentru joc. Pot fi inserate elemente grafice și chiar animații, dacă se dorește. Iată un exemplu de clasă care implementează un ecran de tip High Scores:

public class HighScore extends 
FullCanvas
{
private GameMIDlet parent = null;
private MainMenu menu = null;
public HighScore(GameMIDlet parent,
MainMenu menu)
{
this.parent = parent; this.menu =
menu;
}
protected void paint(Graphics g)
{ //Paint the high scores here
}
public void keyPressed(int keyCode)
{
if (keyCode != KEY_END)
{ //selection list to the screen
parent.setDisplayable(menu);
}
}
}

Secțiunea de Instructiuni (Instructions) trebuie să prezinte concis dar în același timp complet regulile de joc pentru programul nostru, diferite sfaturi (´tips&tricks´ ☺) și alte astfel de elemente. Pentru ca de obicei pe un singur ecran aceste informații nu au cum să încapă, atunci, vor exista opțiunile de More sau Next și cea de Back (sau Edit, după caz).

Exemplele de cod sursă de mai sus sunt preluate în parte din exemple specifice documentației ☺2ME, dar sunt esențiale și în același timp suficiente pentru înțelegerea elementelor de bază pentru programarea unui joc. De asemenea doritorii de informații suplimentare se pot înscrie la www.forum.nokia.com și vor găsi o mulțime de tutoriale și informații din domeniu.


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2004 Agora Media.

[email protected]

LG - LifeŽs Good

www.agora.ro

deltafri

www.agora.ro

www.agora.ro

www.agora.ro