Dessiner un cercle en c++

Fermé
zmandar - 30 déc. 2010 à 18:47
Bonjour,

je veux dessiner une cercle en c++ en utilisant sdl ja fait ce code mais ca ne fonctionne pas svp aide moi à le corriger et merci
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <SDL/SDL.h>

void pause();

void cercle(long const rayon, long const x, long const y, SDL_Surface *const ecran);

int main(int argc, char *argv[])
{

   if (SDL_Init(SDL_INIT_VIDEO) >= 0)
   {
      SDL_Surface *ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
      if (ecran != NULL)
      {
         SDL_WM_SetCaption("Ma super fenêtre SDL !", NULL);
         SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 17, 206, 112));
         SDL_Flip(ecran);

         {
            long const x = 640/2;
            long const y = 480/2;
            long const rayon =25;
            cercle(rayon, x, y, ecran);
         }
       
         pause();
      }
   }
   SDL_Quit();

   return EXIT_SUCCESS;
}


void pause()
{
   int continuer = 1;

   while (continuer)
   {
      SDL_Event event;
      SDL_WaitEvent(&event);
      switch (event.type)
      {
      case SDL_QUIT:
         continuer = 0;
      }
   }
}


void cercle(long const rayon, long const x, long const y, SDL_Surface *const ecran)
{
   double const pi = 3.141592;
   double const pixels = pi*2*rayon;
   double compteur = 0.0;
   long coups = 0;
   SDL_Rect position = {
                          0
                       };

   while (coups < pixels)
   {
      SDL_Surface *rectangle = SDL_CreateRGBSurface (SDL_HWSURFACE,1,1,32,0,0,0,0);
      if (rectangle != NULL)
      {
         SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 10, 20, 120));
         SDL_Flip(ecran);

         position.x = x+rayon* cos(compteur * pi / 180);
         position.y = y+rayon* sin(compteur * pi / 180);
         SDL_BlitSurface(rectangle, NULL, ecran, &position);
         SDL_FreeSurface(rectangle), rectangle = NULL;
      }

      compteur += 360/pixels;
      coups ++;
   }
}