IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

SDL et fonctions de structures


Sujet :

SDL

  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
    Invité
    Invité(e)
    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;}
    ...

  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