Programmer un jeu avec MIDlet Pascal


précédentsommairesuivant

IV. Les Menus

Dans la section précédente, nous avons écrit le programme rendant le jeu jouable. Mais on est contraint de résoudre la même grille à chaque fois. Aussi, l'utilisateur n'a pas d'aide pour comprendre le but du jeu ni pour savoir comment y jouer.

Nous allons dans cette section ajouter un écran d'accueil à notre programme. Cet écran sera muni d'un menu principal donnant accès à plusieurs choix tels que : Nouveau jeu - Aide du jeu - A Propos - Quitter. Bien avant que le menu principal apparaisse, on demandera à l'utilisateur s'il veut activer ou désactiver la musique de fond. Le choix d'un menu fera éventuellement apparaître un autre menu ou effectuer une tâche particulière.

IV-A. Le système de menu

Nous allons utiliser un système de menu bien simple mais avec un peu de fantaisie.

Image non disponible

Chaque menu a un titre général, et des options que nous conserverons dans un tableau. L'affichage du menu se fera par groupe de trois options. Selon qu'on clique sur les touches de direction basse et haute, les autres options deviennent visibles. On affichera une boule à coté du menu en surbrillance quelques secondes après l'affichage des options.

 
Sélectionnez
procedure afficherMenu(index : integer);
 var
      y, z,  d         : integer;
      avant, apres     : integer;
begin
 
 SetFont(FONT_FACE_SYSTEM, FONT_STYLE_PLAIN, FONT_SIZE_SMALL);
 d := GetStringHeight('H');
 
 setColor(0, 0, 55);
 FillRect(0, menuPos.y-d*2, getWidth, (d+9)*5);
 
 setColor(204, 207, 57);
 centrerTexteX(TitreMenu, menuPos.y-d*2);
 
 avant := index-1;
 if (avant<1) then
  avant := dimMenu;
 apres := index+1;
 if (apres > dimMenu) then
  apres := 1;
 
 setColor(116, 138, 113);
 centrerTexteX(menu[avant], menuPos.y);
 
 y := menuPos.y+d+8;
 z:= y+(d div 2)-7;
 setColor(100, 192, 91);
 centrerTexteX(menu[index], y);
 
 y := y+d+8;
 setColor(116, 138, 113);
 centrerTexteX(menu[apres], y);
 
repaint;
delay(400);
drawImage(check, ObtenirCentreX(menu[index])-20, z);
end;

Pour créer par exemple l'écran d'accueil, on définit les options du menu dans le tableau Menu, puis le nombre d'options dans le la variable dimMenu ainsi que le titre du menu. On demandera ensuite au joueur de choisir une option.

 
Sélectionnez
procedure AfficheMenuAccueil ;
 var
     x, etat : integer;
     img : Image;
begin
  img := loadImage('/sokoban.png');
  //on cherhce a centrer l'image sur l'ecran
  x := (getWidth div 2)-(getImageWidth(img) div 2);
 
repeat
 
  setColor(0, 0, 55);
  fillRect(0, 0, getWidth, getHeight);
  menu[1] := 'Jouer';
  menu[2] := 'Aide du jeu';
  menu[3] := 'A propos';
  menu[4] := 'Quitter';
  dimMenu := 4;
  TitreMenu := 'MEMU PRINCIPAL';
 
  //l'entete
  drawImage(img, x, 10);
  afficherMenu(1);
  Repaint;
 
  etat :=choixMenu;
   if (etat=1) then
    AfficheMenuNiveau
    else if (etat=2) then
    annexe.aide;
   else if (etat=3) then
    annexe.apropos;
 until etat= 4; 
 
end;
	  

La sélection d'une option entraîne l'exécution d'une action, que nous codons dans une procédure. Les actions à effectuer pour le choix des options sont écrites dans l'unité annexe.mprsc. Voici tout le code gerant la gestion des menus.

menu.mpsrc
CacherSélectionnez

Et le code de l'unité comportant les actions :

annexe.mpsrc
CacherSélectionnez

IV-B. Assemblage du programme

Nous venons d'écrire le code permettant d'ajouter des menus à notre programme. Il nous reste donc à écrire le programme principal permettant de lancer le jeu depuis le menu principal.

sokoban.mpsrc
Sélectionnez
program sokoban;
 
 uses jeu, header, affichage, misc, menu, annexe;
 
begin	
  menu.AfficheMenuSon;
  menu.AfficheMenuAccueil;
end.
	 

Pour savoir comment éxecuter le programme dans un émulateur ou sur un téléphone portable, vous pouvez consulter le tutoriel suivant : Introduction au MIDlet Pascal 2.02


précédentsommairesuivant

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2010 Kpizingui Darryl. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.