1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    novembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2012
    Messages : 6
    Points : 5
    Points
    5

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Expert éminent sénior

    Avatar de Winjerome
    Homme Profil pro
    Inscrit en
    septembre 2009
    Messages
    8 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : septembre 2009
    Messages : 8 945
    Points : 32 881
    Points
    32 881

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (i==0){couleur[i].r=255;couleur[i].g=0;couleur[i].b=0;}
    ...
    idem :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (i==0){coo[i].x=101;coo[i].y=201;}
    ...
    Avant de poser votre question : FAQ, Tutoriels et recherche sur le forum
    Une erreur ? Messages d'erreur et avertissements
    "Ça ne marche pas" n'apporte aucune information utile permettant de vous aider. Expliquez clairement votre problème (erreurs entières, résultat souhaité vs obtenu...).

    En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
    L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
    Ma version améliorée de FireDVP et son homologue ChroDVP pour Chrome.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    novembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2012
    Messages : 6
    Points : 5
    Points
    5

    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.

Discussions similaires

  1. Passer par adresse dans une fonction une structure
    Par bru.antoine dans le forum C
    Réponses: 1
    Dernier message: 18/06/2012, 14h47
  2. Réponses: 2
    Dernier message: 19/08/2010, 16h20
  3. Réponses: 5
    Dernier message: 27/07/2010, 14h06
  4. Déclaration de pointeur de fonction et structure
    Par ShaiLeTroll dans le forum Delphi
    Réponses: 28
    Dernier message: 05/04/2007, 10h48
  5. Pointeur de fonction et structure
    Par Trunks dans le forum C
    Réponses: 6
    Dernier message: 07/10/2005, 00h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo