Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 4
    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.

  2. #2
    Responsable FAQ C++
    Avatar de Winjerome
    Homme Profil pro Jérôme
    Inscrit en
    septembre 2009
    Messages
    7 536
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme
    Âge : 27
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : septembre 2009
    Messages : 7 536
    Points : 25 391
    Points
    25 391

    Par défaut

    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;}
    ...

  3. #3
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 4
    Points : 1
    Points
    1

    Par défaut

    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.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •