Bonjour à tous,
Voici donc le code source d'un programme tout simple. Celui-ci fait avancer de gauche à droite puis de droite à gauche une vache sur de l'herbe. Ici le but et d'offrir un code très basique utilisant la SDL pour toute personne voulant débuter en SDL.
Avec ce code, vous devriez être capable d'afficher des images sur une fenêtre, gérer la transparence d'une image, et de créer un mouvement simple.
Source / Exemple :
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
/**********************************************************
FONCTION MAIN
int main(int argc, char *argv[])
{
//Création des variables
SDL_Surface *fond = NULL, *pelouse = NULL, *vache = NULL;
SDL_Rect positionPelouse, positionVache;
int continuer = 1, droite = 1;
SDL_Event event;
//Initialisation de la SDL
SDL_Init(SDL_INIT_VIDEO);
//Création de nos surface
fond = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE);
pelouse = SDL_LoadBMP("pelouse.bmp");
vache = SDL_LoadBMP("vache.bmp");
//On gère la transparence sur la vache
SDL_SetColorKey(vache, SDL_SRCCOLORKEY,SDL_MapRGB(vache->format,0,0,255));
//Changement du titre de la fenêtre
SDL_WM_SetCaption("Test sur les mouvements en C",NULL);
//On colore notre fond
SDL_FillRect(fond,NULL,SDL_MapRGB(fond->format,255,0,0));
//On donne une position à notre pelouse
positionPelouse.x = 0;
positionPelouse.y = 0;
positionVache.x = 320;
positionVache.y = 240;
//On blit la pelouse et la vache
SDL_BlitSurface(pelouse,NULL,fond,&positionPelouse);
SDL_BlitSurface(vache,NULL,fond,&positionVache);
//Boucle pour faire avancer la vache (tant qu'on n'a pas quitter le programme, la boucle ne s'arrête pas)
while(continuer) {
SDL_PollEvent(&event);
switch (event.type) {
case SDL_QUIT :
continuer = 0;
break;
}
if (positionVache.x > 590) droite = 0;
if (positionVache.x <= 0) droite = 1;
//On change la vache de position
if (droite) positionVache.x++;
else positionVache.x--;
SDL_Delay(10); //On met en pause 10ms
//on efface l'écran et réaffichons tout
SDL_FillRect(fond,NULL,SDL_MapRGB(fond->format,255,255,255));
SDL_BlitSurface(pelouse,NULL,fond,&positionPelouse);
SDL_BlitSurface(vache,NULL,fond,&positionVache);
//On met à jour l'écran
SDL_Flip(fond);
}
//On ferme la SDL et les surfaces:
SDL_FreeSurface(pelouse);
SDL_FreeSurface(vache);
SDL_Quit();
return EXIT_SUCCESS;
}
Conclusion :
Codez, mais codez propre
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.