voiture télécommandée

  1. #include <stdio.h>
  2. #include <dos.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6. #include <math.h>
  7. #include <graphics.h>
  8. #include <sys\stat.h>
  9. #include <string.h>
  10. #include <fcntl.h>
  11. #include <io.h>
  12.  
  13. #define ARROW_SIZE 10
  14.  
  15.         int pos_x = 640 / 2;                              //positionnement du curseur
  16.         int pos_y = 480 / 2;                              //…au centre de l'écran
  17.         int touche = 0;                                     //valeur d'une touche sur le clavier
  18.         int port = 0x378 ;                                 //valeur du port série
  19.         int graphdriver;
  20.         int graphmode;
  21.         int handle;                                        // traitement de l’enregistrement
  22.         int length;                                         // taille de la phrase (string)
  23.         char *string;                                     // événements enregistrés
  24.  
  25. void init(void)    {
  26.         graphdriver = DETECT;                              
  27.         initgraph(&graphdriver, &graphmode, "..");   //initialisation du BGI dos mode
  28.         handle = creat("C:/parcours.txt", S_IREAD |S_IWRITE);     //création du fichier
  29. }                                                               // ..PARCOURS.TXT sur C:/
  30.  
  31. void draw_arrow_d(int pos_x, int pos_y) {          //dessine une flèche vers la droite
  32.         moveto(pos_x, pos_y);                                    //position d'origine du curseur
  33.         linerel(4*ARROW_SIZE, 0);
  34.         linerel(-2*ARROW_SIZE, -1*ARROW_SIZE);
  35.         linerel(0, 2*ARROW_SIZE);
  36.         linerel(2*ARROW_SIZE, -1*ARROW_SIZE);
  37.         setfillstyle(SOLID_FILL,0);                              //efface l'écran
  38.         floodfill (0,0,1);
  39. }
  40.  
  41. void draw_arrow_g(int pos_x, int pos_y) {            //de même pour les autres fonctions
  42.         moveto(pos_x, pos_y);                                     //…mais la flèche est dessinée
  43.         linerel(-4*ARROW_SIZE,0);                          //…vers la gauche
  44.         linerel(2*ARROW_SIZE, 1*ARROW_SIZE);
  45.         linerel(0, -2*ARROW_SIZE);
  46.         linerel(-2*ARROW_SIZE, 1*ARROW_SIZE);
  47.         setfillstyle(SOLID_FILL,0);
  48.         floodfill (0,0,1);
  49. }
  50.  
  51. void draw_arrow_b(int pos_x, int pos_y) {                       // vers le bas
  52.         moveto(pos_x, pos_y);
  53.         linerel(0*ARROW_SIZE,  4*ARROW_SIZE);
  54.         linerel(-1*ARROW_SIZE,  -2*ARROW_SIZE);
  55.         linerel(2*ARROW_SIZE,  0*ARROW_SIZE);
  56.         linerel(-1*ARROW_SIZE, 2*ARROW_SIZE);
  57.         setfillstyle(SOLID_FILL,0);
  58.         floodfill (0,0,1);
  59. }
  60.  
  61. void draw_arrow_h_g(int pos_x, int pos_y) {                   // haut gauche
  62.         moveto(pos_x, pos_y);
  63.         linerel(-4*ARROW_SIZE,  -4*ARROW_SIZE);
  64.         linerel(0*ARROW_SIZE,  2*ARROW_SIZE);
  65.         linerel(2*ARROW_SIZE,  -2*ARROW_SIZE);
  66.         linerel(-2*ARROW_SIZE, 0*ARROW_SIZE);
  67.         setfillstyle(SOLID_FILL,0);
  68.         floodfill (0,0,1);
  69. }
  70.  
  71. void draw_arrow_h_d(int pos_x, int pos_y) {                     //haut droite
  72.         moveto(pos_x, pos_y);
  73.         linerel(4*ARROW_SIZE,  -4*ARROW_SIZE);
  74.         linerel(0*ARROW_SIZE,  2*ARROW_SIZE);
  75.         linerel(-2*ARROW_SIZE,  -2*ARROW_SIZE);
  76.         linerel(2*ARROW_SIZE, 0*ARROW_SIZE);
  77.         setfillstyle(SOLID_FILL,0);
  78.         floodfill (0,0,1);
  79. }
  80.  
  81. void draw_arrow_b_g(int pos_x, int pos_y) {                      //bas gauche
  82.         moveto(pos_x, pos_y);
  83.         linerel(-4*ARROW_SIZE,  4*ARROW_SIZE);
  84.         linerel(0*ARROW_SIZE,  -2*ARROW_SIZE);
  85.         linerel(2*ARROW_SIZE,  2*ARROW_SIZE);
  86.         linerel(-2*ARROW_SIZE, 0*ARROW_SIZE);
  87.         setfillstyle(SOLID_FILL,0);
  88.         floodfill (0,0,1);
  89. }
  90.  
  91. void draw_arrow_b_d(int pos_x, int pos_y) {                       //bas droite
  92.         moveto(pos_x, pos_y);
  93.         linerel(4*ARROW_SIZE,  4*ARROW_SIZE);
  94.         linerel(0*ARROW_SIZE,  -2*ARROW_SIZE);
  95.         linerel(-2*ARROW_SIZE,  2*ARROW_SIZE);
  96.         linerel(2*ARROW_SIZE, 0*ARROW_SIZE);
  97.         setfillstyle(SOLID_FILL,0);
  98.         floodfill (0,0,1);
  99. }
  100.  
  101. void draw_arrow_h(int pos_x, int pos_y) {                         /haut
  102.         moveto(pos_x, pos_y);
  103.         linerel(0*ARROW_SIZE,  -4*ARROW_SIZE);
  104.         linerel(1*ARROW_SIZE,  2*ARROW_SIZE);
  105.         linerel(-2*ARROW_SIZE,  0*ARROW_SIZE);
  106.         linerel(1*ARROW_SIZE, -2*ARROW_SIZE);
  107.         setfillstyle(SOLID_FILL,0);
  108.         floodfill (0,0,1);
  109. }
  110.  
  111. void dessine(int pos_x, int pos_y) {                          // place un pixel indiquant
  112.         putpixel(pos_x,pos_y, 5);                                    // la position de la voiture
  113. }
  114.  
  115. void main(void)
  116. {
  117.         init();                                     //initialisation  du graph.
  118.         while(touche!=27)                // Esc fait sortir de la boucle
  119.         {
  120.         touche=getch() ;                   // lit la valeur de la touche appuyée
  121.  
  122.         switch (touche)                     // test de la valeur de la touche appuyée
  123.                 {
  124.                 case 56:            //   haut   (8)
  125.                         outport(port,0xf8);                     // envoi de la valeur sur le port                       draw_arrow_h(pos_x, pos_y);        // dessine une flèche vers le haut
  126.                         pos_y--;                                           // déplace la position du curseur
  127.                         string = "avance, ";                         // enregistre le déplacement
  128.                  break;
  129.                 case 57:            //   haut droite  (9)
  130.                         outport(port,0xff);
  131.                         draw_arrow_h_d(pos_x, pos_y);
  132.                         pos_x++; pos_y--;
  133.                         string = "virage à droite, ";
  134.                  break;
  135.                 case 55:           //   haut gauche  (7)
  136.                         outport(port,0xf0);
  137.                         draw_arrow_h_g(pos_x, pos_y);
  138.                         pos_x--; pos_y--;
  139.                         string = "virage à gauche, ";
  140.                  break;
  141.                 case 50:            //   bas    (2)
  142.                         outport(port,0x08);
  143.                         draw_arrow_b(pos_x, pos_y);
  144.                         pos_y++;
  145.                         string = "marche arrière, ";
  146.                  break;      
  147.                 case 49:             //   bas  gauche  (1)
  148.                         outport(port,0x00);
  149.                         draw_arrow_b_g(pos_x, pos_y);
  150.                         pos_x--; pos_y++;
  151.                         string = "marche arrière gauche, ";
  152.                  break;
  153.                 case 51:             //   bas  droit  (3)
  154.                         outport(port,0x0f);
  155.                         draw_arrow_b_d(pos_x, pos_y);
  156.                         pos_x++; pos_y++;
  157.                         string = "marche arrière droite, ";
  158.                  break;
  159.                 case 52:              //   gauche  (4)
  160.                         outport(port,0x80);
  161.                         draw_arrow_g(pos_x, pos_y);
  162.                         pos_x--;
  163.                         string = "tourne les roues sur la gauche, ";
  164.                  break;
  165.                 case 54:              //   droite  (6)
  166.                         outport(port,0x8f);
  167.                         draw_arrow_d(pos_x, pos_y);
  168.                         pos_x++;
  169.                         string = "tourne les roues sur la droite, ";
  170.                  break;
  171.                 case 27:             //   fin du programme  (Esc)
  172.                         close(handle);                          // ferme le fichier texte
  173.                         printf("regarde ton parcours sur ce fichier : C:/parcours.txt");
  174.                         clock_t clock(), clock();
  175.                         delay(5000);                            //délai de 5 secondes
  176.                         closegraph();                           //ferme le BGI mode
  177.                  break;
  178.                 default :           //   repos
  179.                         outport(port,0x88);
  180.                  break;
  181.                 }
  182.  
  183.                 dessine(pos_x, pos_y);                // place le point de positionnement du curseur
  184.                 length = strlen(string);                // longueur (en caractère) de la variable string
  185.                 write(handle, string, length);       // écriture de cette phrase dans le fichier texte
  186.         }
  187. }
  188.  

contact - faire un lien