Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > API graphiques > SDL
SDL Forum d'entraide sur l'API SDL. Avant de poster -> FAQ SDL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/11/2012, 22h05   #1
zominym
Invité de passage
 
Inscription : novembre 2012
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 2
Points : 1
Points : 1
Par défaut 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.
zominym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2012, 02h43   #2
Winjerome
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 5 167
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 25
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : septembre 2009
Messages : 5 167
Points : 12 622
Points : 12 622
Bonsoir,

Je trouve moyen de nommer des variables du même nom que les structures (couleur et coo)
Peut-être dû au fait que tu n'aies gardé que ce qui nous intéresse ici, mais il manque fclose(fichier);.

Sinon pour effectuer une comparaison, on utilise == et non =
Code :
1
2
if (i==0){couleur[i].r=255;couleur[i].g=0;couleur[i].b=0;}
...
idem :
Code :
1
2
if (i==0){coo[i].x=101;coo[i].y=201;}
...
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/12/2012, 11h32   #3
zominym
Invité de passage
 
Inscription : novembre 2012
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 2
Points : 1
Points : 1
Ouah, quelle erreur de débutant!!!!!! et dire que je ne l'ai même pas vue...
En tout cas merci pour ça et pour les conseils, bon weekend

Amicalement, zominym.
zominym est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h30.


 
 
 
 
Partenaires

Hébergement Web