Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sur les pointeur et les fonctions !

y'a un truc que j'ai pas saisi

    11 avril 2006 à 17:49:40

    en fait, j'ai une fonction couleur que j'ai mise dans couleur.c, qui me permet de genrer une couleur au hasard. Mais, pour renvoyer les 3 quantités de couleurs, celle ci utilise 3 pointeur (en l'occurence c'est une structure)

    il me dit que le pointeur n'ets pas declaré.

    Voici les codes :

    couleur.c

    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include "couleur.h"

    void colorer(numeroCouleur)
    {
        switch(numeroCouleur)
        {
            case 1:
                pColor->r =  255;
                pColor->v =  255;
                pColor->b =  0;
                break;

            case 2:
                pColor->r =  255;
                pColor->v =  128;
                pColor->b =  0;
                break;

            case 3:
                pColor->r =  255;
                pColor->v =  0;
                pColor->b =  0;
                break;

            case 4:
                pColor->r =  255;
                pColor->v =  0;
                pColor->b =  255;
                break;

            case 5:
                pColor->r =  0;
                pColor->v =  0;
                pColor->b =  255;
                break;

            case 6:
                pColor->r =  0;
                pColor->v =  255;
                pColor->b =  0;
                break;

            case 7:
                pColor->r =  255;
                pColor->v =  255;
                pColor->b =  255;
                break;

            case 8:
                pColor->r =  0;
                pColor->v =  0;
                pColor->b =  0;
                break;

            case 9:
                pColor->r =  128;
                pColor->v =  128;
                pColor->b =  128;
                break;
        }
    }


    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #define TAILLE_FENETRE 300




    int main(int argc, char *argv[])
    {


        typedef struct Color Color;
        struct Color
        {
            int r;
            int v;
            int b;
        };

        Color *pColor;
        SDL_Surface *ecran = NULL, *carre = NULL, *surfaceJeu = NULL, *carreBis = NULL;
        SDL_Event event;
        int continuer = 1, derniereAction = 0, perdu = 1;
        long points = 0;
        SDL_Rect positionCarre;
        SDL_Rect positionSurfaceJeu;
        SDL_Rect positionCarreBis;
        long hauteurEcran = TAILLE_FENETRE, largeurEcran = TAILLE_FENETRE;
        Uint32 temps = 0, tempsAttente = 0;


        positionCarreBis.x = 80;
        positionCarreBis.y = 40;

        positionSurfaceJeu.x = 20;
        positionSurfaceJeu.y = 20;



        SDL_Init(SDL_INIT_VIDEO);

        ecran = SDL_SetVideoMode(largeurEcran, hauteurEcran, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_NOFRAME);
        SDL_WM_SetCaption("Jeu du montée, descente", NULL);

        positionCarre.x = ecran->w - 40;
        positionCarre.y = ecran->h - 40;

        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 200, 200, 200));

        carre = SDL_CreateRGBSurface(SDL_HWSURFACE, 20, 20, 32, 0, 0, 0, 0);
        SDL_FillRect(carre, NULL, SDL_MapRGB(carre->format, 255, 0, 0));

        couleur(1);

        surfaceJeu = SDL_CreateRGBSurface(SDL_HWSURFACE, ecran->w - 40, ecran->h - 40, 32, 0, 0, 0, 0);
        SDL_FillRect(surfaceJeu, NULL, SDL_MapRGB(ecran->format, pColor->r, pColor->v, 255));
        SDL_BlitSurface(surfaceJeu, NULL, ecran, &positionSurfaceJeu);

        SDL_EnableKeyRepeat(10, 10);




        while (continuer + perdu - 1)
        {
            temps = SDL_GetTicks();




                SDL_PollEvent(&event);


                if (event.type == SDL_QUIT)
                {
                        continuer = 0;
                }
                else if(event.type == SDL_KEYDOWN)
                {

                        switch (event.key.keysym.sym)
                        {
                            case SDLK_ESCAPE:
                                continuer = 0;
                                break;
                            case SDLK_UP:
                                if(positionCarre.y == 20)
                                {
                                    perdu = 0;
                                }
                                else
                                {
                                    positionCarre.y -=20;
                                    derniereAction = 1;
                                }
                                break;
                            case SDLK_DOWN:

                                if(positionCarre.y == ecran->h - 40)
                                {
                                    perdu = 0;
                                }
                                else
                                {
                                    positionCarre.y +=20;
                                    derniereAction = 2;
                                }
                                break;

                            case SDLK_RIGHT:
                                if(positionCarre.x == ecran->w - 40)
                                {
                                    perdu = 0;

                                }
                                else
                                {
                                    positionCarre.x +=20;
                                    derniereAction = 3;
                                }
                                break;
                            case SDLK_LEFT:
                                if(positionCarre.x == 20)
                                {
                                    perdu = 0;
                                }
                                else
                                {
                                    positionCarre.x -=20;
                                    derniereAction = 4;
                                }


                                break;
                        }
                }

                else
                {
                        switch (derniereAction)
                            {
                            case 1:
                            if(positionCarre.y == 20)
                            {
                                perdu = 0;
                            }
                            else
                            {
                                positionCarre.y -= 20;
                            }
                            break;

                            case 2:
                            if(positionCarre.y == ecran->h - 40)
                            {
                                perdu = 0;
                            }
                            else
                            {
                                positionCarre.y +=20;
                            }
                            break;

                            case 3:
                            if(positionCarre.x == ecran->w - 40)
                            {
                                perdu = 0;
                            }
                            else
                            {
                                positionCarre.x +=20;
                            }
                            break;

                            case 4:
                            if(positionCarre.x == 20)
                            {
                                perdu = 0;
                            }
                            else
                            {
                                positionCarre.x -=20;
                            }

                            break;
                            }
                    }

                    if((tempsAttente = 250 - (SDL_GetTicks() - temps)) > 0);
                    SDL_Delay(tempsAttente);





            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 200, 200, 200));

            SDL_FillRect(surfaceJeu, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
            SDL_BlitSurface(surfaceJeu, NULL, ecran, &positionSurfaceJeu);

            SDL_BlitSurface(carre, NULL, ecran, &positionCarre);
            SDL_Flip(ecran);





        pColor->v = 255;

        }
        SDL_FreeSurface(surfaceJeu);
        SDL_FreeSurface(carre);
        SDL_Quit();
        return EXIT_SUCCESS;
    }


    pour l'instant j'ia pas encore fait l'aleatoire, juste la fonction est utlise avec un chiffre deja defini (en l'occurecne 1)

    que puis je faire ?

    le pointeur etant dclare dans le main.c, je ne comprends pas

    Merci d'avance

    El Tonio
    • Partager sur Facebook
    • Partager sur Twitter

    Sur les pointeur et les fonctions !

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown