Problème de boucle pour un affichage SDL

Signaler
Messages postés
2
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
19 avril 2010
-
Messages postés
2
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
19 avril 2010
-
Bonjour à tous, j'ai établis un début de programme de poker pour un projet à rendre dans la fin de cette année scolaire, ce programme tire 5 cartes au hasard puis me les affiche pour le moment, cependant je débute tout juste dans la programmation avec la bibliothèque SDL et j'aimerais faire quelques boucles me permettant d'initialiser, créer, et positionner mes surfaces, voici le début de mon code avec les "boucles" que j'aimerais créer:
		SDL_Surface *ecran = NULL;

//"BOUCLE" CARTE
SDL_Surface *carte1 = NULL;
SDL_Surface *carte2 = NULL;
SDL_Surface *carte3 = NULL;
SDL_Surface *carte4 = NULL;
SDL_Surface *carte5 = NULL;
////////////////////////////

SDL_Rect positionCarte1, positionCarte2, positionCarte3, positionCarte4, positionCarte5;

SDL_Init(SDL_INIT_VIDEO);

ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Video Poker", NULL);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 24, 118, 7));

carte1 = SDL_CreateRGBSurface(SDL_HWSURFACE, 79, 123, 32, 0, 0, 0, 0);
carte2 = SDL_CreateRGBSurface(SDL_HWSURFACE, 79, 123, 32, 0, 0, 0, 0);
carte3 = SDL_CreateRGBSurface(SDL_HWSURFACE, 79, 123, 32, 0, 0, 0, 0);
carte4 = SDL_CreateRGBSurface(SDL_HWSURFACE, 79, 123, 32, 0, 0, 0, 0);
carte5 = SDL_CreateRGBSurface(SDL_HWSURFACE, 79, 123, 32, 0, 0, 0, 0);
//"BOUCLE" CREATE CART

positionCarte1.x = 100;
positionCarte1.y = 100;
positionCarte2.x = 200;
positionCarte2.y = 100;
positionCarte3.x = 300;
positionCarte3.y = 100;
positionCarte4.x = 400;
positionCarte4.y = 100;
positionCarte5.x = 500;
positionCarte5.y = 100;

SDL_FillRect(carte1, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_FillRect(carte2, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_FillRect(carte3, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_FillRect(carte4, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_FillRect(carte5, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_BlitSurface(carte1, NULL, ecran, &positionCarte1);
SDL_BlitSurface(carte2, NULL, ecran, &positionCarte2);
SDL_BlitSurface(carte3, NULL, ecran, &positionCarte3);
SDL_BlitSurface(carte4, NULL, ecran, &positionCarte4);
SDL_BlitSurface(carte5, NULL, ecran, &positionCarte5);
SDL_Flip(ecran);

A la place des répétitions de bout de programme j'aimerais qu'il y ai des boucles, est-ce que cela est possible? Si oui, pouvez vous m'aidez ?
Merci d'avance! :)

2 réponses

Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
25 avril 2011

Oui, c'est possible.

Par exemple, tu peux faire des tableaux:
SDL_Surface* carte[5];


Autre astuce: tu peux regrouper les surfaces et leurs coordonnées dans une structure. C'est plus facile par exemple si tu dois passer une «carte» à une fonction: les deux informations sont représentées par une seule variable. Il est même possible de faire un tableau de structures.

Tu peux aussi lire «Le langage C» de Kernighan et Ritchie; c'est très instructif.

Bonne prog,
Messages postés
2
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
19 avril 2010

Effectivement, merci j'avais déjà essayé avec un tableau mais il y avais un problème d'initialisation ^^" j'avais juste oublier les accolades autour du NULL =)
merci pour l'aide :)