asprog
Messages postés33Date d'inscriptionmercredi 12 novembre 2008StatutMembreDernière intervention26 décembre 2010
-
26 déc. 2010 à 15:41
pop70
Messages postés181Date d'inscriptionmardi 6 avril 2010StatutMembreDernière intervention 7 janvier 2012
-
30 déc. 2010 à 21:00
Bonjour;
je me suis chargée de faire un jeu de casse brique sous C++ en utilisant des classes
que je dois les créer(orienté objet) ainsi que la bibliothèque de classe SDL,voici mes classes :Raquette,classe Brique,Classe Balle,...
j'ai commencé par la création de la fenêtre et ça marchait très bien ensuite j'ai créer une raquette qui se déplace quand j'appuie sur les touches Left & right du clavier enfin j'ai créer les briques;mais quand j'exécute; la première fenêtre que j'ai crée s'affiche et il contient l'image du fond et la brique et quand j'appuie sur la touche left ou right du clavier une autre fenêtre qui contient la raquette et la brique s'affiche mais il ne contient pas l'image du fond , je sais bien que le problème provient du SDL_Flip qui met à jour la fenêtre mais je ne sait pas comment la manipuler :voici mon code
Code :
pop70
Messages postés181Date d'inscriptionmardi 6 avril 2010StatutMembreDernière intervention 7 janvier 201210 30 déc. 2010 à 21:00
A mon avis, le problème est le suivant,
le main :
SDL_BlitSurface(fond,NULL,Screen,&rfond);
r.move(); // Ici le fond n'est pas blitté.
SDL_Flip(Screen);
SDL_Delay(60);
On se rend compte que show(_screen) n'affiche que la raquette et les briques, autrement dit, dans la boucle while il n'y a pas le fond n'est pas remis, il disparait.
Ce qu'il faudrait, c'est passer le fond en argument au constructeur de raquette pour que celui-ci puisse l'afficher avant show(_screen).
ça donnerait :
Raquette::Raquette ( int initialX, int initialY, int nbrFramesW, int nbrFramesH, char* file,SDL_Surface* screen, SDL_Surface* fond){
loadSpriteSheet ( file );
{
...
wFond = fond;
}
void Raquette::move()
{
//...
while (running)
{
//...
SDL_Rect posFond;
posFond.x = 0;
posFond.y = 0;
SDL_BlitSurface(wFond,NULL,Screen, &posFond);
show(_screen);
}
}