Advertisement
Gmax100

Code Bonus

Oct 9th, 2024
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.13 KB | None | 0 0
  1. void navigation_calendrier(int *jour, int *mois, int *annee)
  2. {
  3.     // Définir la variables de navigation de mois et année.
  4.     int nav_mois = *mois;
  5.     int nav_annee = *annee;
  6.  
  7.     // Créer une variable pour enregistrer la saisie du clavier.
  8.     int c_touche = 0;
  9.  
  10.     // Effectuer la boucle suivante jusqu'à ce que la touche ESCAPE est appuyé.
  11.     do
  12.     {
  13.         // Afficher une demande d'instructions de navigation sous le calendrier.
  14.         gotoxy(0, 20);
  15.         printf("\nAppuyez les fleches GAUCHE/DROITE pour voir les mois precedents/suivants");
  16.         printf("\nou appuyer sur l'ESPACE pour saisir une autre date.");
  17.  
  18.         // Cette boucle vide se brise lorsqu'une touche du clavier est appuyée.
  19.         while (!_kbhit()) {};
  20.  
  21.         // La variable c_touche enregistre la première valeur du clavier.
  22.         c_touche = _getch();
  23.  
  24.         // Si le code de touche étendu est détectée...
  25.         if (c_touche == 0 || c_touche == 224)
  26.         {
  27.             // Lire le deuxième code.
  28.             c_touche = _getch();
  29.  
  30.             // Selon le deuxième code lu...
  31.             switch (c_touche)
  32.             {
  33.  
  34.                 // Code GAUCHE (75): Naviguer le calendrier vers la gauche.
  35.             case GAUCHE:
  36.                 --nav_mois;
  37.  
  38.                 // Si on dépasse janvier...
  39.                 if (nav_mois < JAN)
  40.                 {
  41.                     // Revenir au décembre de l'annéee précédente.
  42.                     --nav_annee;
  43.                     nav_mois = DEC;
  44.                 }
  45.                 break;
  46.  
  47.                 // Code DROITE (77): Naviguer le calendrier vers la droite.
  48.             case DROITE:
  49.                 ++nav_mois;
  50.  
  51.                 // So on dépasse décembre...
  52.                 if (nav_mois > DEC)
  53.                 {
  54.                     // Passer au janvier de l'année suivante.
  55.                     ++nav_annee;
  56.                     nav_mois = JAN;
  57.                 }
  58.                 break;
  59.             }
  60.         }
  61.  
  62.         // Réafficher l'en-tête avec les valeurs de navigation.
  63.         afficher_en_tete(nav_mois, nav_annee);
  64.  
  65.         // Si la navigation retombe sur la date demandée...
  66.         if (nav_annee == *annee && nav_mois == *mois)
  67.         {
  68.             // Envoyer le jour demandé dans les paramètres d'affichage.
  69.             // Ceci affichera la date demandé en rouge.
  70.             afficher_calendrier(*jour, *mois, *annee);
  71.         }
  72.         // Sinon, afficher le calendrier du mois et année de navigation.
  73.         else
  74.         {
  75.             afficher_calendrier(0, nav_mois, nav_annee);
  76.         }
  77.     } while (c_touche != ESCAPE);
  78.  
  79.     system("cls");
  80.    
  81. }
  82.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement