Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1646 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Implimenter Un Menu En C Avec Allegro

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Implimenter Un Menu En C Avec Allegro

n°2185748
ala99
Posté le 13-04-2013 à 15:39:55  profilanswer
 

S'il vous plait quelqu'un peut m'aider à implimenter un menu du jeu en c  j'ai essayé avec ce code mais ça marche pas  
int i=0;
int menu=0;
while(continuer!=0)
{
 
 clear_bitmap(Buffer);
 
if(  key[KEY_DOWN]  )
{
i++;
menu=(i-1)%3;
 
}
 
 
else if(  key[KEY_UP]  )
{
i--;
menu=(i-1)%3;
 
}
 
Buffer = create_bitmap(800, 480);  
blit(img[menu], Buffer, 0, 0, 0, 0, img[menu]->w, img[menu]->h);  
 
blit(Buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);  
}

mood
Publicité
Posté le 13-04-2013 à 15:39:55  profilanswer
 

n°2186211
Profil sup​primé
Posté le 17-04-2013 à 11:23:33  answer
 

Bonjour,
 
On ne connait ni tes valeurs de choix de menus, ni combien il y en a.
 
Es-tu new à la programmation en C?
Si oui, ne commence certainement pas par là.
 
Sinon, on ne voit pas l'intégralité de ton code. On ne voit pas l'initialisation de la var "continuer" ni ce que représente le tableau key[].
 
A mon avis, si tu mets un tableau de key comme ceci :
key[0] = 21;
key[1] = 42;
Ton KEY_DOWN est égal à 0 et donc ton KEY_UP à 1. (supposition)
 
(imaginons que les touches 21 et 42 sont les touches bas et haut)...
Dans le premier if, ca équivaudra à :
   
if ( 21 )  
{
i++;  
menu=(i-1)%3;  
}  
else if ( 42 )
{
i--;
menu = (i-1)%3;
}
 
Dans tous les cas, il rentrera forcément dans le 1er if, et pas dans le second.
Puisque tu demandes à ton ordi "Est-ce que 21 est différent de 0 ?" il te répond "Bah oui !" donc il rentre dans c'te condition.
 
 
Si tu vas tout le temps vers le bas, c'est donc normal, et je te conseille de faire une sorte de "keypressed = getch();" (en SDL je sais pas à quoi ça équivaut) et de vérifier la valeur de keypressed (c'est un int).


Message édité par Profil supprimé le 17-04-2013 à 11:25:19
n°2186305
Terminapor
I'll see you rise.
Posté le 17-04-2013 à 19:10:55  profilanswer
 

Sauf que si c'est comme la SDL, chaque case correspond à la clef et renvoi l'état (appuyé/pas appuyé).
Sinon, tu as pas mis assez de code, on a aucune idée de ce qui se passe derrière, de plus tu recréer tout le temps ton buffer ce qui me semble bizarre et pour finir, tu dis pas ce qui ne marche pas :D


---------------
Perhaps you don't deserve to breathe
n°2186544
Profil sup​primé
Posté le 19-04-2013 à 00:17:15  answer
 

Je parlais par KEY_DOWN et KEY_UP la fleche du haut et flèche du bas...
 
Sinon je n'ai pas comris ton problème, donc exprime toi mieux..

n°2186547
ala99
Posté le 19-04-2013 à 00:47:12  profilanswer
 

Non je suis pas débutant en c mais j'ai pas trouvé la solution pour implimenter un menu en c avec la bibliothéque ALLEGRO et non  pas avec  SDL , ce que je me demande c'est que j'ai 3 images (jouer/option/quitter) , la  1 ère  correspond à menu 1 (jouer)  et lorsque je clique sur la touche bas elle m'affiche la 2 eme image (option ) et finalement lorsque je clique encore sur la touche bas   elle m'affiche la 3 eme image (quitter )

n°2189258
edwoud
⭐ shériff de l'espace
Posté le 07-05-2013 à 15:36:49  profilanswer
 

ala99 a écrit :

Non je suis pas débutant en c mais j'ai pas trouvé la solution pour implimenter un menu en c avec la bibliothéque ALLEGRO et non  pas avec  SDL , ce que je me demande c'est que j'ai 3 images (jouer/option/quitter) , la  1 ère  correspond à menu 1 (jouer)  et lorsque je clique sur la touche bas elle m'affiche la 2 eme image (option ) et finalement lorsque je clique encore sur la touche bas   elle m'affiche la 3 eme image (quitter )


 
Avec Allegro, tu as deux possibilités
 
Afficher une image du menu (ou du texte) et gérer le clic avec la souris
 
Afficher une image du menu (ou du texte) et gérer le clavier
 
En général ça se passe comme ça pour le clavier
 

Code :
  1. ALLEGRO_EVENT_QUEUE *events;
  2. ALLEGRO_EVENT event;
  3. /*
  4. je suppose que tu as déjà initialisé Allegro et ouvert une fenêtre...
  5. al_init();
  6. al_install_keyboard();
  7. al_install_mouse();
  8. al_create_display(...,...);
  9. */
  10. events=al_create_event_queue();
  11. al_register_event_source(events, al_get_keyboard_event_source());
  12. al_register_event_source(events, al_get_mouse_event_source());
  13. redo=1;
  14. while (redo) {
  15.     al_wait_for_event(events,&event);
  16.     if (event.keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
  17.        redo=0;
  18.     }
  19. }


 
avec la souris, un truc du genre

Code :
  1. if ((event.type==ALLEGRO_EVENT_MOUSE_BUTTON_DOWN && event.mouse.button==1))
  2. {
  3. if (event.mouse.x>positionmenu && event.mouse.x>positionmenufin && event.mouse.y  etc.
  4. }


Message édité par edwoud le 07-05-2013 à 15:40:54

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Implimenter Un Menu En C Avec Allegro

 

Sujets relatifs
mysql C++ code blocks[CSS]Mon menu horizontale
[C] Pointer de pointer de pointer[C#] Utilisation de Google Calendar
Créer un dossier avec la date sous forme jj-mm-aaaa avec C#[C] A l'aide je ne comprends rien a ce programme
[C] Remplacer un char dans une chaine de caractèrelangage C - PB unsigned char
langage C 
Plus de sujets relatifs à : Implimenter Un Menu En C Avec Allegro


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR