SDL et fonctions de structures
Bonjour à tous,
Je viens demander un petit coup de main =)
Le souci est qu'une fonction perso qui est sensée afficher un carré de 2 pixels de large sur mon écran ne fonctionne pas (pas d'erreur de compil, les pixels n'apparaissent juste pas).....
Je vous donne les infos utiles de mon code:
mon main:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
SDL_Init( SDL_INIT_VIDEO );
SDL_Surface* screen=NULL;
screen = SDL_SetVideoMode(402, 402, 32,SDL_HWSURFACE|SDL_DOUBLEBUF);
SDL_WM_SetCaption("Tron",NULL);
SDL_FillRect(screen,NULL,SDL_MapRGB(screen->format,0,0,0));
// initialisation des valeurs
FILE* fichier = NULL;
fichier = fopen("config.txt","r");
rewind(fichier);
int nb=fgetc(fichier);
int i=1;
struct couleur couleur[nb]; //nb est compris entre 2 et 8 inclus.
for (i=0; i<=nb-1; i++)
{
if (i=0){couleur[i].r=255;couleur[i].g=0;couleur[i].b=0;}
if (i=1){couleur[i].r=0;couleur[i].g=255;couleur[i].b=0;}
if (i=2){couleur[i].r=0;couleur[i].g=0;couleur[i].b=255;}
if (i=3){couleur[i].r=255;couleur[i].g=255;couleur[i].b=0;}
if (i=4){couleur[i].r=255;couleur[i].g=128;couleur[i].b=65;}
if (i=5){couleur[i].r=65;couleur[i].g=255;couleur[i].b=255;}
if (i=6){couleur[i].r=255;couleur[i].g=65;couleur[i].b=255;}
if (i=7){couleur[i].r=190;couleur[i].g=190;couleur[i].b=190;}
}
struct coo coo[nb];
for (i=0; i<=nb-1; i++)
{
if (i=0){coo[i].x=101;coo[i].y=201;}
if (i=1){coo[i].x=301;coo[i].y=201;}
if (i=2){coo[i].x=201;coo[i].y=101;}
if (i=3){coo[i].x=201;coo[i].y=301;}
if (i=4){coo[i].x=151;coo[i].y=151;}
if (i=5){coo[i].x=151;coo[i].y=251;}
if (i=6){coo[i].x=251;coo[i].y=151;}
if (i=7){coo[i].x=251;coo[i].y=251;}
pixelOn(coo[i],couleur[i],screen);
}
pixelOn(coo[0],couleur[0],screen);
SDL_Flip(screen);
pause();
SDL_Quit();
printf("Exited cleanly\n"); |
structures et fonctions:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
struct coo
{
int x; // Abscisses
int y; // Ordonnées
};
struct couleur
{
int r;
int g;
int b;
};
void pixelOn(struct coo coor, struct couleur coul, struct SDL_Surface *screen)
{
SDL_Surface *aire=NULL;
SDL_Rect position;
position.x=coor.x;
position.y=coor.y;
aire=SDL_CreateRGBSurface(SDL_HWSURFACE,2,2,32,0,0,0,0);
SDL_FillRect(aire,NULL,SDL_MapRGB(aire->format,coul.r,coul.g,coul.b));
SDL_BlitSurface(aire,NULL,screen,&position);
SDL_FreeSurface(aire);
} |
Voili voilou. Récap' sur l'erreur:
-Le programme compile
-PixelOn n'a pas l'air de jouer son rôle
-PixelOn fonctionne si je lui balance des structures qui ne proviennent pas d'un tableau.
Merci d'avance, zominym.