mirmoleboss
Messages postés303Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention29 juillet 2011
-
9 avril 2010 à 14:40
mirmoleboss
Messages postés303Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention29 juillet 2011
-
10 avril 2010 à 19:44
Bonjour,
Voilà j'ai fait ce petit code mais il ne marche pas enfin il marchait mais l'intégration d'une image ne marche pas, je ne vois pas d'où vient le problème si quelqu'un pouvait m'aider
Merci D'avance
/* Simple program: Create a blank window, wait for keypress, quit.
Please see the SDL documentation for details on using the SDL API:
/Developer/Documentation/SDL/docs.html
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "SDL.h"
int main(int argc, char *argv[])
{
Uint32 initflags = SDL_INIT_VIDEO; /* See documentation for details */
SDL_Surface *screen NULL, *rectangle NULL, *rectangle2=NULL, *imageDeFond = NULL; /* Déclaration des surfaces utilisés*/
Uint8 video_bpp = 0;
Uint32 videoflags = SDL_SWSURFACE | SDL_DOUBLEBUF;
SDL_Rect position, position2, positionFond; /*Variable Position*/
int done;
SDL_Event event;
/* Initialize the SDL library */
if ( SDL_Init(initflags) < 0 ) {
fprintf(stderr, "Couldn't initialize SDL: %s\n",
SDL_GetError());
exit(1);
}
SDL_WM_SetCaption("TEST 10", NULL); /*Nom de notre Fenêtre*/
/* Set 1080x720 video mode */
screen=SDL_SetVideoMode(1080,720, video_bpp, videoflags);
position.x = 0; // Les coordonnées de la surface seront (0, 0)
position.y = 0;
position2.x = 860;
position2.y = 540;
positionFond.x = 300;
positionFond.y = 300;
/* Chargement d'une image Bitmap dans une surface */
imageDeFond = SDL_LoadBMP("zozor.bmp");
/* On blitte par-dessus l'écran */
rectangle2 = SDL_CreateRGBSurface(SDL_HWSURFACE, 220, 180, 32, 0, 0, 0, 0); // Allocation de la surface
rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 220, 180, 32, 0, 0, 0, 0); // Allocation de la surface
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 100, 206, 112)); /*Couleur du bckgd*/
SDL_FillRect(rectangle2, NULL, SDL_MapRGB(screen->format, 255, 255, 255)); // Remplissage de la surface avec du blanc
SDL_FillRect(rectangle, NULL, SDL_MapRGB(screen->format, 255, 255, 255)); // Remplissage de la surface avec du blanc
SDL_BlitSurface(rectangle, NULL, screen, &position); // Collage de la surface sur l'écran
SDL_BlitSurface(rectangle2, NULL, screen, &position2); // Collage de la surface sur l'écran
SDL_BlitSurface(imageDeFond, NULL, screen, &positionFond);
SDL_Flip(screen); /* Mise à jour de l'écran */
if (screen == NULL) {
fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n",
video_bpp, SDL_GetError());
SDL_Quit();
exit(2);
}
done = 0;
while ( !done ) {
/* Check for events */
while ( SDL_PollEvent(&event) ) {
switch (event.type) {
case SDL_MOUSEMOTION:
break;
case SDL_MOUSEBUTTONDOWN:
break;
case SDL_KEYDOWN:
/* Any keypress quits the app... */
case SDL_QUIT:
done = 1;
break;
default:
break;
}
}
}a
/*Libére la surfance afin de fermer le prog*/
SDL_FreeSurface(rectangle);
SDL_FreeSurface(rectangle2);
SDL_FreeSurface(imageDeFond);
/* Clean up the SDL library */
SDL_Quit();
return(0);
}
pop70
Messages postés181Date d'inscriptionmardi 6 avril 2010StatutMembreDernière intervention 7 janvier 201210 9 avril 2010 à 19:37
Es-tu sûre que ton image est une bitmap, car si ce n'est pas le cas il faut utiliser :
imageDeFond = IMG_Load("zozor.jpg", NULL) et inclure <SDL_image.h>
sinon vérifie l'ordre dans lequel tu blittes les images et vérifie que les image sont bien dans le meme dossier que l'exécutable.
Si tu executes ton programme depuis le compilateur, tu ne verras pas forcément le bon résultat. Lance l'exécutable dans le dossier debug (ou release) pour être sure que ça ne fonctionne pas.