SHARE
TWEET

Untitled

a guest Dec 3rd, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <allegro5/allegro.h>
  4. #include <allegro5/allegro_native_dialog.h>
  5. #include <allegro5/allegro_image.h>
  6. #include <allegro5/allegro_primitives.h>
  7.  
  8. //quelques globales
  9. ALLEGRO_DISPLAY* display;
  10. ALLEGRO_EVENT_QUEUE* queue;
  11. ALLEGRO_TIMER* timer;
  12. int SCREENX;
  13. int SCREENY;
  14.  
  15. void InitialisationPrincipale(void);
  16. void DestructionPrincipale(void);
  17.  
  18. void InitialisationSousMenu();
  19. void DestructionSousMenu();
  20. void RunSousMenu(int* fin);
  21.  
  22. void RunJeu(int* fin);
  23. void DestructionJeu();
  24.  
  25. void Erreur(char* txt);
  26.  
  27. int main()
  28. {
  29.     int fin = 0;
  30.  
  31.     InitialisationPrincipale();
  32.     InitialisationSousMenu();
  33.  
  34.     printf("Entrée dans boucle principale\n");
  35.     while (!fin)
  36.     {
  37.         ALLEGRO_EVENT event = { 0 };
  38.         al_wait_for_event(queue, &event);
  39.  
  40.         //CLAVIER
  41.         if (event.type == ALLEGRO_EVENT_KEY_DOWN)
  42.         {
  43.             printf("touche pressee dans la boucle principale\n");
  44.             switch (event.keyboard.keycode)
  45.             {
  46.             case ALLEGRO_KEY_F1: RunSousMenu(&fin); break;
  47.             case ALLEGRO_KEY_F2: RunJeu(&fin);  break;
  48.             case ALLEGRO_KEY_ESCAPE: fin = 1;  break;
  49.             }
  50.         }
  51.  
  52.         //SOURIS
  53.         else if (event.type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN)
  54.         {
  55.             printf("bouton %d presse dans la boucle prinicpale\n", event.mouse.button);
  56.         }
  57.         else if (event.type == ALLEGRO_EVENT_MOUSE_BUTTON_UP)
  58.         {
  59.             printf("bouton %d relache dans la boucle principale\n", event.mouse.button);
  60.         }
  61.         else if (event.type == ALLEGRO_EVENT_MOUSE_AXES)
  62.         {
  63.             printf("x:%4d y:%4d dx:%4d dy:%4d z:%3d w:%3d dans boucle principale\n",
  64.                 event.mouse.x, event.mouse.y, //position horizontale et verticale
  65.                 event.mouse.dx, event.mouse.dy, //mouvement horizontal et vertical
  66.                 event.mouse.z, event.mouse.w); //position de molette verticale et horizontale
  67.         }
  68.  
  69.         //TIMER
  70.         else if (event.type == ALLEGRO_EVENT_TIMER)
  71.         {
  72.             printf("boucle principale\n");
  73.         }
  74.  
  75.         //CONTROLE FIN DU PROGRAMME
  76.         else if (event.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
  77.         {
  78.             fin = 1;
  79.         }
  80.  
  81.     }
  82.  
  83.     //libératon de la mémoire allouée aux pointeurs
  84.     DestructionPrincipale();
  85.     DestructionSousMenu();
  86.     DestructionJeu();
  87.  
  88.     return 0;
  89. }
  90.  
  91. /************************************************************************************
  92.  PRINCIPAL / INITIALISATION
  93. *************************************************************************************/
  94. void InitialisationPrincipale()
  95. {
  96.     if (!al_init())
  97.         Erreur("al_init()");
  98.     if (!al_install_keyboard())
  99.         Erreur("al_install_keyboard()");
  100.     if (!al_install_mouse())
  101.         Erreur("al_install_mouse()");
  102.     if (!al_init_primitives_addon())
  103.         Erreur("al_init_primitive_addon()");
  104.  
  105.     //création fenêtre
  106.     display = al_create_display(1024, 768);
  107.     if (!display)
  108.         Erreur("al_create_display()");
  109.     SCREENX = al_get_display_width(display);
  110.     SCREENY = al_get_display_height(display);
  111.  
  112.     //pour gérer les images
  113.     if (!al_init_image_addon())
  114.         Erreur("al_init_image_addon()");
  115.  
  116.     //création du timer
  117.     timer = al_create_timer(1.0 / 2);
  118.     if (!timer)
  119.         Erreur("al_create_timer()");
  120.  
  121.     //mise en place d'une file d'événements
  122.     queue = al_create_event_queue();
  123.     if (!queue)
  124.         Erreur("al_create_event_queue()");
  125.     //les types d'événements à récupérer
  126.     al_register_event_source(queue, al_get_keyboard_event_source());
  127.     al_register_event_source(queue, al_get_mouse_event_source());
  128.     al_register_event_source(queue, al_get_timer_event_source(timer));
  129.     al_register_event_source(queue, al_get_display_event_source(display));
  130.  
  131.     al_start_timer(timer);
  132. }
  133.  
  134. /************************************************************************************
  135.  PRINCIPAL / DESTRUCTION
  136. *************************************************************************************/
  137. void DestructionPrincipale()
  138. {
  139.     al_destroy_timer(timer);
  140.     al_destroy_event_queue(queue);
  141.     al_destroy_display(display);
  142. }
  143. /************************************************************************************
  144.  SOUS-MENU / INITIALISATION
  145. *************************************************************************************/
  146. void InitialisationSousMenu()
  147. {
  148.     //préparation de tout ce qui est nécéssaire à la page menu
  149.     //des images, des sons, une musique etc...
  150.     printf("Initialisations pour le sous menu\n");
  151. }
  152.  
  153. /************************************************************************************
  154.  SOUS-MENU / DESTRUCTION
  155. *************************************************************************************/
  156. void DestructionSousMenu()
  157. {
  158.     //libération de la mémoire des pointeurs alloués pour le sous menu
  159.     printf("Destruction sous menu\n");
  160. }
  161.  
  162. /************************************************************************************
  163.  SOUS-MENU / BOUCLE
  164.  Deux opérateurs pointeurs principaux :
  165.  & pour récupérer l'adresse mémoire de quelque chose
  166.  * pour accéder à une adresse mémoire
  167.  Deux autres opérateurs pointeurs
  168.  -> contraction de l'étoile * pour accès aux champs d'une structure via un pointeur
  169.  [] contraction de l'étoile pour accès aux éléments d'un tableau
  170. *************************************************************************************/
  171. void RunSousMenu(int* fin)
  172. {
  173.     int sousMenu = 1;
  174.     al_flush_event_queue(queue);
  175.  
  176.     while (sousMenu)
  177.     {
  178.         ALLEGRO_EVENT event = { 0 };
  179.         al_wait_for_event(queue, &event);
  180.  
  181.         //CLAVIER
  182.         if (event.type == ALLEGRO_EVENT_KEY_DOWN)
  183.         {
  184.             printf("touche pressee dans le sous menu\n");
  185.             switch (event.keyboard.keycode)
  186.             {
  187.             case ALLEGRO_KEY_ESCAPE:  sousMenu = 0;  break;
  188.             }
  189.         }
  190.  
  191.         //SOURIS
  192.         else if (event.type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN)
  193.         {
  194.             printf("bouton %d presse dans le sous menu\n", event.mouse.button);
  195.         }
  196.         else if (event.type == ALLEGRO_EVENT_MOUSE_BUTTON_UP)
  197.         {
  198.             printf("bouton %d relache dans le sous menu\n", event.mouse.button);
  199.         }
  200.         else if (event.type == ALLEGRO_EVENT_MOUSE_AXES)
  201.         {
  202.             printf("x:%4d y:%4d dx:%4d dy:%4d z:%3d w:%3d dans le sous menu\n",
  203.                 event.mouse.x, event.mouse.y, //position horizontale et verticale
  204.                 event.mouse.dx, event.mouse.dy, //mouvement horizontal et vertical
  205.                 event.mouse.z, event.mouse.w); //position de molette verticale et horizontale
  206.         }
  207.  
  208.         //TIMER
  209.         else if (event.type == ALLEGRO_EVENT_TIMER)
  210.         {
  211.             printf("sous menu\n");
  212.         }
  213.  
  214.         //CONTROLE FIN DU PROGRAMME
  215.         else if (event.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
  216.         {
  217.             *fin = 1;
  218.             sousMenu = 0;
  219.         }
  220.     }
  221. }
  222.  
  223. /************************************************************************************
  224.  JEU / INITIALISATION
  225. *************************************************************************************/
  226. void RunJeu(int* fin)
  227. {
  228.     printf("arrivee dans le jeu\n");
  229.     int Jeu = 1;
  230.     al_flush_event_queue(queue);
  231.  
  232.     while (Jeu)
  233.     {
  234.         ALLEGRO_EVENT event = { 0 };
  235.         al_wait_for_event(queue, &event);
  236.  
  237.         //CLAVIER
  238.         if (event.type == ALLEGRO_EVENT_KEY_DOWN)
  239.         {
  240.             printf("touche pressee dans le sous menu\n");
  241.             switch (event.keyboard.keycode)
  242.             {
  243.             case ALLEGRO_KEY_ESCAPE:  Jeu = 0;  break;
  244.             }
  245.         }
  246.  
  247.         //SOURIS
  248.         else if (event.type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN)
  249.         {
  250.             printf("bouton %d presse dans le sous menu\n", event.mouse.button);
  251.         }
  252.         else if (event.type == ALLEGRO_EVENT_MOUSE_BUTTON_UP)
  253.         {
  254.             printf("bouton %d relache dans le sous menu\n", event.mouse.button);
  255.         }
  256.         else if (event.type == ALLEGRO_EVENT_MOUSE_AXES)
  257.         {
  258.             printf("x:%4d y:%4d dx:%4d dy:%4d z:%3d w:%3d dans le sous menu\n",
  259.                 event.mouse.x, event.mouse.y, //position horizontale et verticale
  260.                 event.mouse.dx, event.mouse.dy, //mouvement horizontal et vertical
  261.                 event.mouse.z, event.mouse.w); //position de molette verticale et horizontale
  262.         }
  263.  
  264.         //TIMER
  265.         else if (event.type == ALLEGRO_EVENT_TIMER)
  266.         {
  267.             printf("Jeu\n");
  268.         }
  269.  
  270.         //CONTROLE FIN DU PROGRAMME
  271.         else if (event.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
  272.         {
  273.             *fin = 1;
  274.             Jeu = 0;
  275.         }
  276.         //afichage des graphiques, décors, personnages
  277.  
  278.     }
  279. }
  280. /************************************************************************************
  281.  Jeu / DESTRUCTION
  282. *************************************************************************************/
  283. void DestructionJeu()
  284. {
  285.     //libération de la mémoire des pointeurs alloués pour le sous menu
  286.     printf("Destruction Jeu\n");
  287. }
  288. /************************************************************************************
  289.  TOOLS
  290. *************************************************************************************/
  291. void Erreur(char* txt)
  292. {
  293.     ALLEGRO_DISPLAY* d;
  294.     d = al_is_system_installed() ? al_get_current_display() : NULL;
  295.     al_show_native_message_box(d, "ERREUR", txt, NULL, NULL, 0);
  296.     exit(EXIT_FAILURE);
  297. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top