Programmation SDL

Fermé
Aurélien49 Messages postés 59 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 21 mai 2011 - 21 sept. 2009 à 22:38
Bonjour à tous. Je suis débutant en programmation et je suis actuellement le cours en c de Matéo21 sur Le Site Du Zero. Je voudrais savoir comment créer une surface rectangle via une fonction. La fenêtre principale est créée dans le "main" et je souhaiterai que ma fonction "void fctrectangle(SDL_Surface * adr)" affiche un rectangle sur la fenêtre principale lors d'un appel. J'espère avoir été assez clair, merci à tous. Lens49 :)

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#define LARGEURF 640
#define HAUTEURF 480
#define LARGEURR 220
#define HAUTEURR 180

void pause();
void fctrectangle(SDL_Surface * adr);

int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL;

SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(LARGEURF, HAUTEURF, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Ma super fenêtre SDL !", NULL);
SDL_Flip(ecran);

fctrectangle(&ecran);

pause();

SDL_Quit();

return EXIT_SUCCESS;
}

void fctrectangle(SDL_Surface * adr)
{
SDL_Surface *rectangle = NULL;
SDL_Rect position;

rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, LARGEURR, HAUTEURR, 32, 0, 0, 0, 0); // Allocation de la surface
SDL_FillRect(adr, NULL, SDL_MapRGB(adr->format, 17, 206, 112));

position.x = (LARGEURF / 2) - (LARGEURR / 2); // La surface sera centrée
position.y = (HAUTEURF / 2) - (HAUTEURR / 2);

SDL_FillRect(rectangle, NULL, SDL_MapRGB(adr->format, 50, 255, 25)); // Remplissage de la surface avec du blanc
SDL_BlitSurface(rectangle, NULL, adr, &position); // Collage de la surface sur l'écran

SDL_FreeSurface(rectangle); // Libération de la surface

pause();
}

void pause()
{
int continuer = 1;
SDL_Event event;

while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
}
}
}
A voir également: