Pages

samedi 29 octobre 2011

Traçage de courbe en langage C avec la bibliothèque graphique SDL


Ecrire un programme qui permet de tracer la courbe d’une  fonction donnée,  le programme doit donner une liste de choix (sin(x) ,log(x) , exp(x) ……) et selon ce choix on trace la courbe représentatif de la fonction sélectionner. Pour réaliser ce projet on doit utiliser la  bibliotheque graphique SDL.



 

SDL : Simple DirectMedia Layer  est une bibliothèque très utilisée dans le monde de la création d'applications multimédias en deux dimensions comme les jeux video, les démos ghraphiques, les émulateurs, etc. Sa simplicité, sa flexibilité, sa portabilité et surtout sa licence GNU LGPL contribuent à son grand succès. Elle est de plus considérée comme un outil suffisamment simple, et est souvent conseillée aux programmeurs débutants pour commencer dans le monde de la programmation multimédia.
Cette bibliothèque se retrouve sous de nombreux systèmes d'exploitation, comme Linux, Windows, Windows CE, BeOS, Mac OS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, et QNX. Elle fonctionne aussi sous quelques systèmes embarqués, par exemple des consoles de jeu portable. Elle est sous licence GNU LGPL version 2.

  • Capture d’écran :








Programme en C  :
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <math.h>
 int main(int argc, char *argv[])
 {
 int continuer = 1,p,a,t;
     SDL_Event event;
     SDL_Surface *ecran = NULL, *rectangle = NULL, *imageDeFond1 = NULL,*imageDeFond2 = NULL,*imageDeFond3 = NULL,*imageDeFond4 = NULL,*imageDeFond5 = NULL,*imageDeFond6 = NULL,*imageDeFond7 = NULL;
SDL_Rect   position,positionFond1,positionFond2,positionFond3,positionFond4,positionFond5,
positionFond6,positionFond7;
SDL_Init(SDL_INIT_VIDEO);
SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);
ecran = SDL_SetVideoMode(1000, 600, 32, SDL_HWSURFACE| SDL_DOUBLEBUF);// definit la taille de la fenetre (largeur x hauteur)
 rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 1,2, 32, 0, 0, 0, 0); // Allocation de la surface (taille du point)
 SDL_WM_SetCaption("tracage de courbe ", NULL);// met le nom de la fenetre
 positionFond1.x = 385;
positionFond1.y = 0;
 positionFond2.x = 399;
positionFond2.y = 100;
positionFond3.x = 399;
positionFond3.y =200;

positionFond4.x = 399;
positionFond4.y = 300;
positionFond5.x = 399;
positionFond5.y = 400;
positionFond6.x = 399;
positionFond6.y = 500;
positionFond7.x = 0;
positionFond7.y = 0;
    imageDeFond7 = SDL_LoadBMP("aa.bmp");
    SDL_BlitSurface(imageDeFond7, NULL, ecran, &positionFond7);
    imageDeFond1 = SDL_LoadBMP("menu.bmp");
    SDL_BlitSurface(imageDeFond1, NULL, ecran, &positionFond1);
    imageDeFond2 = SDL_LoadBMP("sin.bmp");
    SDL_SetAlpha(imageDeFond2, SDL_SRCALPHA,220);
    SDL_BlitSurface(imageDeFond2, NULL, ecran, &positionFond2);
    imageDeFond3 = SDL_LoadBMP("cos.bmp");
    SDL_SetAlpha(imageDeFond3, SDL_SRCALPHA, 220);
    SDL_BlitSurface(imageDeFond3, NULL, ecran, &positionFond3);
    imageDeFond4 = SDL_LoadBMP("exp.bmp");
    SDL_SetAlpha(imageDeFond4, SDL_SRCALPHA, 220);
    SDL_BlitSurface(imageDeFond4, NULL, ecran, &positionFond4);
    imageDeFond5 = SDL_LoadBMP("log.bmp");
    SDL_SetAlpha(imageDeFond5, SDL_SRCALPHA, 220);
    SDL_BlitSurface(imageDeFond5, NULL, ecran, &positionFond5);
    imageDeFond6 = SDL_LoadBMP("quitter.bmp");
    SDL_SetAlpha(imageDeFond6, SDL_SRCALPHA, 220);
    SDL_BlitSurface(imageDeFond6, NULL, ecran, &positionFond6);
     SDL_Flip(ecran); // Mise à jour de l'écran
    while (continuer)
     {
         SDL_WaitEvent(&event);
         switch(event.type)
         {
             case SDL_QUIT:
                 continuer = 0;
             case SDL_MOUSEMOTION:
            if(event.motion.x>399 &&event.motion.x<601 &&event.motion.y>110 && event.motion.y<188)
            {
              SDL_ShowCursor(SDL_ENABLE);
            imageDeFond2 = SDL_LoadBMP("sin.bmp");
            SDL_SetAlpha(imageDeFond2, SDL_SRCALPHA,228);
            SDL_BlitSurface(imageDeFond2, NULL, ecran, &positionFond2);
              SDL_Flip(ecran);
              SDL_WaitEvent(&event);
            }
            else
                if(event.motion.x>399 &&event.motion.x<601 &&event.motion.y>208 && event.motion.y<286)
                {
                imageDeFond3 = SDL_LoadBMP("cos.bmp");
                SDL_SetAlpha(imageDeFond3, SDL_SRCALPHA,228);
                SDL_BlitSurface(imageDeFond3, NULL, ecran, &positionFond3);
                SDL_Flip(ecran);
                 }
                 else
                 if(event.motion.x>399 &&event.motion.x<601 &&event.motion.y>306 && event.motion.y<382)
                 {
                imageDeFond4 = SDL_LoadBMP("exp.bmp");
                SDL_SetAlpha(imageDeFond4, SDL_SRCALPHA,228);
                SDL_BlitSurface(imageDeFond4, NULL, ecran, &positionFond4);
                SDL_Flip(ecran);
                 }
                 else
                if(event.motion.x>399 &&event.motion.x<601 &&event.motion.y>402 && event.motion.y<480)
                {
                imageDeFond5 = SDL_LoadBMP("log.bmp");
                SDL_SetAlpha(imageDeFond5, SDL_SRCALPHA,228);
                SDL_BlitSurface(imageDeFond5, NULL, ecran, &positionFond5);
                SDL_Flip(ecran);
                 }
                else
                 if(event.motion.x>399 &&event.motion.x<601 &&event.motion.y>500 && event.motion.y<578)
                 {
                imageDeFond6 = SDL_LoadBMP("quitter.bmp");
                SDL_SetAlpha(imageDeFond6, SDL_SRCALPHA,228);
                SDL_BlitSurface(imageDeFond6, NULL, ecran, &positionFond6);
                SDL_Flip(ecran);
                 }
            else
            {
                imageDeFond7 = SDL_LoadBMP("aa.bmp");
                SDL_BlitSurface(imageDeFond7, NULL, ecran, &positionFond7);
            imageDeFond1 = SDL_LoadBMP("menu.bmp");
            SDL_BlitSurface(imageDeFond1, NULL, ecran, &positionFond1);
            imageDeFond2 = SDL_LoadBMP("sin.bmp");
           SDL_SetAlpha(imageDeFond2, SDL_SRCALPHA,220);
           SDL_BlitSurface(imageDeFond2, NULL, ecran, &positionFond2);
           imageDeFond3 = SDL_LoadBMP("cos.bmp");
           SDL_SetAlpha(imageDeFond3, SDL_SRCALPHA, 220);
           SDL_BlitSurface(imageDeFond3, NULL, ecran, &positionFond3);
           imageDeFond4 = SDL_LoadBMP("exp.bmp");
           SDL_SetAlpha(imageDeFond4, SDL_SRCALPHA, 220);
           SDL_BlitSurface(imageDeFond4, NULL, ecran, &positionFond4);
           imageDeFond5 = SDL_LoadBMP("log.bmp");
           SDL_SetAlpha(imageDeFond5, SDL_SRCALPHA, 220);
           SDL_BlitSurface(imageDeFond5, NULL, ecran, &positionFond5);
           imageDeFond6 = SDL_LoadBMP("quitter.bmp");
           SDL_SetAlpha(imageDeFond6, SDL_SRCALPHA, 220);
           SDL_BlitSurface(imageDeFond6, NULL, ecran, &positionFond6);
              SDL_Flip(ecran);
           }
            break;
               case SDL_MOUSEBUTTONUP:
                     if( event.button.x>399 && event.button.x<601 && event.button.y>110 &&  event.button.y<188)
                    {
                          // construction des axes*******************************************************************************
                     SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 12,2,45));
 for ( a=0;a<1000;a++)
 {
                     position.x = a ;
             position.y = 300 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
 }
  for ( a=0;a<600;a++)
 {
            position.x = 500 ;
             position.y = a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
 }
  // construction des fleches*******************************************************************************
 for ( a=490;a<500;a++)
 {
                     position.x = a ;
             position.y =500-a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     }
 for ( a=500;a<510;a++)
 {
                     position.x = a ;
             position.y = a-500 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
   }
 for ( a=1000;a>990;a--)
 {
                     position.x = a ;
             position.y = 300+1000-a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
      SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     }
 for ( a=990;a<1000;a++)
 {
                     position.x = a ;
             position.y =290+a-990 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
    SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
   }
 // TRACE DE LA FONCTION
 for (t =-500; t<500;t++)

  {
                 position.x = 500+t; // abcisse du point
             position.y =300-sin(t*0.01)*200 ;// ordonnee du point
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 100, 25));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     SDL_Flip(ecran); // Mise à jour de l'écran
 }
                    p=1;
                    while(p==1)
                    {
                      SDL_WaitEvent(&event);
                        switch(event.type)
                         {
                          case SDL_QUIT:
                            p=0;
                             continuer = 0;
                           break;
                          case SDL_KEYDOWN:
                          switch (event.key.keysym.sym)
                           {
                            case SDLK_ESCAPE: /* Appui sur la touche Echap, pour retourner au menu */
                              p = 0;
                              imageDeFond7 = SDL_LoadBMP("aa.bmp");
          SDL_BlitSurface(imageDeFond7, NULL, ecran, &positionFond7);
           imageDeFond1 = SDL_LoadBMP("menu.bmp");
          SDL_BlitSurface(imageDeFond1, NULL, ecran, &positionFond1);
          imageDeFond2 = SDL_LoadBMP("sin.bmp");
          SDL_SetAlpha(imageDeFond2, SDL_SRCALPHA,220);
          SDL_BlitSurface(imageDeFond2, NULL, ecran, &positionFond2);
          imageDeFond3 = SDL_LoadBMP("cos.bmp");
          SDL_SetAlpha(imageDeFond3, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond3, NULL, ecran, &positionFond3);
          imageDeFond4 = SDL_LoadBMP("exp.bmp");
          SDL_SetAlpha(imageDeFond4, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond4, NULL, ecran, &positionFond4);
          imageDeFond5 = SDL_LoadBMP("log.bmp");
          SDL_SetAlpha(imageDeFond5, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond5, NULL, ecran, &positionFond5);
          imageDeFond6 = SDL_LoadBMP("quitter.bmp");
          SDL_SetAlpha(imageDeFond6, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond6, NULL, ecran, &positionFond6);
          SDL_Flip(ecran); // Mise à jour de l'écran
                              break;
                            }
                            break;
                         }
                      }
                      }
                      else
                      if( event.button.x>399 && event.button.x<601 && event.button.y>208 &&  event.button.y<286)
                    {
                          // construction des axes*******************************************************************************
                     SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format,12,2,45));
 for ( a=0;a<1000;a++)
 {
                     position.x = a ;
             position.y = 300 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
 }
  for ( a=0;a<600;a++)
 {
            position.x = 500 ;
             position.y = a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
 }
  // construction des fleches*****************************************************************************
 for ( a=490;a<500;a++)
 {
                     position.x = a ;
             position.y =500-a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     }
 for ( a=500;a<510;a++)
 {
                     position.x = a ;
             position.y = a-500 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
   }
 for ( a=1000;a>990;a--)
 {
                     position.x = a ;
             position.y = 300+1000-a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
      SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     }
 for ( a=990;a<1000;a++)
 {
                     position.x = a ;
             position.y =290+a-990 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
    SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
   }
 // TRACE DE LA FONCTION
 for (t =-500; t<500;t++)
  {
                 position.x = 500+t; // abcisse du point
             position.y =300-cos(t*0.01)*200 ;// ordonnee du point
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 100, 25));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     SDL_Flip(ecran); // Mise à jour de l'écran
 }
                    p=1;
                    while(p==1)
                    {
                      SDL_WaitEvent(&event);
                        switch(event.type)
                         {
                          case SDL_QUIT:
                            p=0;
                             continuer = 0;
                           break;
                          case SDL_KEYDOWN:
                          switch (event.key.keysym.sym)
                           {
                            case SDLK_ESCAPE:
                              p = 0;
          imageDeFond7 = SDL_LoadBMP("aa.bmp");
          SDL_BlitSurface(imageDeFond7, NULL, ecran, &positionFond7);
           imageDeFond1 = SDL_LoadBMP("menu.bmp");
          SDL_BlitSurface(imageDeFond1, NULL, ecran, &positionFond1);
          imageDeFond2 = SDL_LoadBMP("sin.bmp");
          SDL_SetAlpha(imageDeFond2, SDL_SRCALPHA,220);
          SDL_BlitSurface(imageDeFond2, NULL, ecran, &positionFond2);
          imageDeFond3 = SDL_LoadBMP("cos.bmp");
          SDL_SetAlpha(imageDeFond3, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond3, NULL, ecran, &positionFond3);
          imageDeFond4 = SDL_LoadBMP("exp.bmp");
          SDL_SetAlpha(imageDeFond4, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond4, NULL, ecran, &positionFond4);
          imageDeFond5 = SDL_LoadBMP("log.bmp");
          SDL_SetAlpha(imageDeFond5, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond5, NULL, ecran, &positionFond5);
          imageDeFond6 = SDL_LoadBMP("quitter.bmp");
          SDL_SetAlpha(imageDeFond6, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond6, NULL, ecran, &positionFond6);
          SDL_Flip(ecran); // Mise à jour de l'écran
                              break;
                            }
                            break;
                         }

                      }
                      }
                      else
                      if( event.button.x>399 && event.button.x<601 && event.button.y>306 &&  event.button.y<382)
                    {
                          // construction des axes*******************************************************************************
                     SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format,12,2,45));
 for ( a=0;a<1000;a++)
 {
                     position.x = a ;
             position.y = 300 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran

 }
  for ( a=0;a<600;a++)
 {
            position.x = 500 ;
             position.y = a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran

 }
  // construction des fleches*******************************************************************************
 for ( a=490;a<500;a++)
 {
                     position.x = a ;
             position.y =500-a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     }
 for ( a=500;a<510;a++)
 {
                     position.x = a ;
             position.y = a-500 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
   }
 for ( a=1000;a>990;a--)
 {
                     position.x = a ;
             position.y = 300+1000-a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
      SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     }
 for ( a=990;a<1000;a++)
 {
                     position.x = a ;
             position.y =290+a-990 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
    SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
   }

 // TRACE DE LA FONCTION

 for (t =-500; t<500;t++)

  {
                 position.x = 500+t; // abcisse du point
             position.y =300-exp(t*0.01)*100 ;// ordonnee du point
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 100, 25));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     SDL_Flip(ecran); // Mise à jour de l'écran
 }
                    p=1;
                    while(p==1)
                    {
                      SDL_WaitEvent(&event);
                        switch(event.type)
                         {
                          case SDL_QUIT:
                            p=0;
                             continuer = 0;
                           break;
                          case SDL_KEYDOWN:
                          switch (event.key.keysym.sym)
                           {
                            case SDLK_ESCAPE:
                              p = 0;
          imageDeFond7 = SDL_LoadBMP("aa.bmp");
          SDL_BlitSurface(imageDeFond7, NULL, ecran, &positionFond7);
           imageDeFond1 = SDL_LoadBMP("menu.bmp");
          SDL_BlitSurface(imageDeFond1, NULL, ecran, &positionFond1);
          imageDeFond2 = SDL_LoadBMP("sin.bmp");
          SDL_SetAlpha(imageDeFond2, SDL_SRCALPHA,220);
          SDL_BlitSurface(imageDeFond2, NULL, ecran, &positionFond2);
          imageDeFond3 = SDL_LoadBMP("cos.bmp");
          SDL_SetAlpha(imageDeFond3, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond3, NULL, ecran, &positionFond3);
          imageDeFond4 = SDL_LoadBMP("exp.bmp");
          SDL_SetAlpha(imageDeFond4, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond4, NULL, ecran, &positionFond4);
          imageDeFond5 = SDL_LoadBMP("log.bmp");
          SDL_SetAlpha(imageDeFond5, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond5, NULL, ecran, &positionFond5);
          imageDeFond6 = SDL_LoadBMP("quitter.bmp");
          SDL_SetAlpha(imageDeFond6, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond6, NULL, ecran, &positionFond6);
          SDL_Flip(ecran); // Mise à jour de l'écran
                              break;
                            }
                            break;
                         }

                      }
                      }
                      else
                      if( event.button.x>399 && event.button.x<601 && event.button.y>402 &&  event.button.y<480)
                    {
                    // construction des axes*******************************************************************************
                     SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format,12,2,45));
 for ( a=0;a<1000;a++)
 {
                     position.x = a ;
             position.y = 300 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
 }
  for ( a=0;a<600;a++)
 {
            position.x = 500 ;
             position.y = a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran

 }
  // construction des fleches*******************************************************************************
 for ( a=490;a<500;a++)
 {
                     position.x = a ;
             position.y =500-a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     }
 for ( a=500;a<510;a++)
 {
                     position.x = a ;
             position.y = a-500 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
   }
 for ( a=1000;a>990;a--)
 {
                     position.x = a ;
             position.y = 300+1000-a ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
      SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     }
 for ( a=990;a<1000;a++)
 {
                     position.x = a ;
             position.y =290+a-990 ;
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
    SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
   }
 // TRACE DE LA FONCTION
 for (t =0; t<500;t++)
  {
                 position.x = 500+t; // abcisse du point
             position.y =300-log(t*0.01)*100;// ordonnee du point
      SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 255, 100, 25));
     SDL_BlitSurface(rectangle, NULL, ecran, &position); // Collage du point sur l'écran
     SDL_Flip(ecran); // Mise à jour de l'écran
 }
                    p=1;
                    while(p==1)
                    {
                      SDL_WaitEvent(&event);
                        switch(event.type)
                         {
                          case SDL_QUIT:
                            p=0;
                             continuer = 0;
                           break;
                          case SDL_KEYDOWN:
                          switch (event.key.keysym.sym)
                           {
                            case SDLK_ESCAPE:
                              p = 0;
          imageDeFond7 = SDL_LoadBMP("aa.bmp");
          SDL_BlitSurface(imageDeFond7, NULL, ecran, &positionFond7);
           imageDeFond1 = SDL_LoadBMP("menu.bmp");
          SDL_BlitSurface(imageDeFond1, NULL, ecran, &positionFond1);
          imageDeFond2 = SDL_LoadBMP("sin.bmp");
          SDL_SetAlpha(imageDeFond2, SDL_SRCALPHA,220);
          SDL_BlitSurface(imageDeFond2, NULL, ecran, &positionFond2);
          imageDeFond3 = SDL_LoadBMP("cos.bmp");
          SDL_SetAlpha(imageDeFond3, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond3, NULL, ecran, &positionFond3);
          imageDeFond4 = SDL_LoadBMP("exp.bmp");
          SDL_SetAlpha(imageDeFond4, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond4, NULL, ecran, &positionFond4);
          imageDeFond5 = SDL_LoadBMP("log.bmp");
          SDL_SetAlpha(imageDeFond5, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond5, NULL, ecran, &positionFond5);
          imageDeFond6 = SDL_LoadBMP("quitter.bmp");
          SDL_SetAlpha(imageDeFond6, SDL_SRCALPHA, 220);
          SDL_BlitSurface(imageDeFond6, NULL, ecran, &positionFond6);
          SDL_Flip(ecran); // Mise à jour de l'écran
                              break;
                            }
                            break;
                         }
                      }
                      }
                       else
                      if( event.button.x>399 && event.button.x<601 && event.button.y>500 &&  
                          event.button.y<578)
                    {
                          p=0;
                          continuer=0;
                    }
                     break;
            }
 }
     SDL_FreeSurface(rectangle); // Libération de la surface
    SDL_Quit();
     return EXIT_SUCCESS;
 }



Telecharger le programme complet  gratuitement     :    Cliquer ici




8 commentaires:

  1. Salut , je n'ai pa pu faire la compilation (j'utilise le DEV C++ ) , par exemple erreur ici: SDL_Event event;
    ,j'ai pas compris c(est quoi le probléme ,
    et je n'arrive pas à télécharger le programme complet de lien que vous avez mettez ,est ce qu'il y a un autre lien pour télécharger ce programme ?? ( et merci d'avance ) .

    RépondreSupprimer
    Réponses
    1. bonsoir,veuillez me donner ton adresse email et je vais vous envoyer le programme complet.Merci

      Supprimer
    2. voilà mon adresse:issaminho1991@gmail.com
      tu peut m'envoyer le pogramme complet.
      et merci.

      Supprimer
  2. Salut , voila mon e-mail et merci : sofian_d@live.com

    RépondreSupprimer
  3. Bonsoir, j'ai les mêmes Probléme que sofiane pouvez-vous m'envoyer le programme SVP, voici man @ :
    sarakamilla23@gmail.com

    RépondreSupprimer
  4. Salut tu peut m'envoyer le programme s'il vous plait mr.a.karim.x@gmail.com

    RépondreSupprimer
  5. voici aussi mon mail. anoh_abbah@yahoo.fr

    RépondreSupprimer
  6. voici l mien mydiobes@hotail.fr merci de m'envoyer le programme complet

    RépondreSupprimer

Partenaires

Computers Blogs

Contactez-nous

Nom

E-mail *

Message *

Tous droits resérvés-www.exercices-corriges.com Seo Blogger Templates