Rechercher : dans
Par :

Probleme Sprites SDL/C

popsitune, le 24 jun 2009 à 18:16:54 
 Signaler ce message aux modérateurs

Bonjour,

j'essai actuellement de separer une image en 4 sprite comme expliquer sur un site internet ( je ne sais pas si je peux le citer) mais il se trouve que j'arrive juste a afficher un fond blanc et, l'image n'apparait pas et n'est pas afficher en étant " eclater " sur ce fond. voici le code peut être comprendrez vous mieux merci d'avance pour votre aide :)

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL_image.h>
#include <string>


const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

const int SHEET_WIDTH = 200;
const int SHEET_HEIGHT = 200;

SDL_Surface *faces = NULL;
SDL_Surface *screen = NULL;

SDL_Event event;
SDL_Rect clip[ 4 ];




SDL_Surface *load_image( std::string filename ) {

SDL_Surface* loadedImage = NULL;


SDL_Surface* optimizedImage = NULL;

loadedImage = SDL_LoadBMP( filename.c_str() );


if( loadedImage != NULL ) {

optimizedImage = SDL_DisplayFormat( loadedImage );


SDL_FreeSurface( loadedImage );
}
return optimizedImage;
}

void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination ,SDL_Rect*clip=NULL) {

SDL_Rect offset;

offset.x = x;
offset.y = y;

SDL_BlitSurface( source, clip, destination, &offset );
}

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

void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination ,SDL_Rect*clip=NULL);
SDL_Init( SDL_INIT_VIDEO);



screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );
SDL_FillRect( screen, &screen->clip_rect, SDL_MapRGB( screen->format,255,255,255));



SDL_WM_SetCaption( "Hello World", NULL );

clip[ 0 ].x = 0;
clip[ 0 ].y = 0;
clip[ 0 ].w = SHEET_WIDTH/2;
clip[ 0 ].h = SHEET_HEIGHT/2;

//On coupe la partie en haut à droite (second sprite)
clip[ 1 ].x = SHEET_WIDTH/2;
clip[ 1 ].y = 0;
clip[ 1 ].w = SHEET_WIDTH/2;
clip[ 1 ].h = SHEET_HEIGHT/2;

//On coupe la partie en bas à gauche (troisième sprite)
clip[ 2 ].x = 0;
clip[ 2 ].y = SHEET_HEIGHT/2;
clip[ 2 ].w = SHEET_WIDTH/2;
clip[ 2 ].h = SHEET_HEIGHT/2;

//On coupe la partie en bas à droite (quatrième sprite)
clip[ 3 ].x = SHEET_WIDTH/2;
clip[ 3 ].y = SHEET_HEIGHT/2;
clip[ 3 ].w = SHEET_WIDTH/2;
clip[ 3 ].h = SHEET_HEIGHT/2;

apply_surface( 0, 0, faces, screen, &clip[ 0 ] );
apply_surface( SCREEN_WIDTH-(SHEET_WIDTH/2), 0, faces, screen, &clip[ 1 ] );
apply_surface( 0, SCREEN_HEIGHT-(SHEET_HEIGHT/2), faces, screen, &clip[ 2 ] );
apply_surface( SCREEN_WIDTH-(SHEET_WIDTH/2), SCREEN_HEIGHT-(SHEET_HEIGHT/2), faces, screen, &clip[ 3 ] );
SDL_Flip(screen);
SDL_Delay(3000);
SDL_Quit();

return EXIT_SUCCESS;
}

Configuration: Windows Vista Internet Explorer 7.0

Meilleures réponses pour « Probleme Sprites SDL/C » dans :
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
3D Secure / Verified by Visa / SecureCode: Qu'est-ce que c'est ? VoirDepuis octobre 2008, les banques et commerçants en ligne ont commencé à adopter le système 3DSecure pour les paiements sur Internet. Qu'est-ce que c'est ? 3DSecure est appelé "Verified by Visa" chez Visa, et "SecureCode" chez Mastercard. (Les logos...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Collection CommentÇaMarche.net