Partage
  • Partager sur Facebook
  • Partager sur Twitter

pointeur dans une fonction

    27 juin 2006 à 0:14:35

    bonjour

    voila je me brouille les neuronnes avec les pointeurs de structures.

    peux ton me dire une fois que ma structure a etait cree (la voila groupe joueurs)
    le la cree dans le mains de la en jouant (je cree un rpg) je rentre en combat donc dans une nouvelle fonction (la mon pointeur marche ) mais dans cette fonction je la reenvoi vers une autre mais c'est la que sa marche plus

    quelqu'un peut il me dire comment on fais

    du genre

    main :
    envoye &joueurs et recu par groupe *joueur
    envoye joueurs et recu par groupe joueur

    etc

    car je ne comprend plus rien j'ai beau relire le superbe cour de mateo mais bon
    • Partager sur Facebook
    • Partager sur Twitter
      27 juin 2006 à 0:21:38

      Montre le code pour voir.
      • Partager sur Facebook
      • Partager sur Twitter
        27 juin 2006 à 0:35:32

        ok
        bon courage

        je ne te fais pas tous voir car ya beaucoup de ligne

        la structure

        typedef struct groupe groupe;
        struct groupe
        {
             int experience;//experience aquise
        int exptemp;
             int or;
             int combienpourlevelup;//pour le level up il faut
        };


        la la creation et la mise au valeur que je veux dans la fonction principal

        groupe groupes ={0};

        groupes.experience =0;//experience aquise
        groupes.or =0;
        groupes.combienpourlevelup =100;//pour le level up il faut



        la premiere envoi
        collision(HAUT,tableau,&pospersos,&zoneacharger,ecran,perso,groupes);


        la fonction collision qui la recoit
        void collision(int direction,int tableau[LARGEUR][HAUTEUR],
        SDL_Rect *positionjoueur,int *zoneacharger,SDL_Surface *ecran,joueur perso[],groupe groupes)
        {


        la je la renvoi

           if (tableau[a][b-1] == 'E')
             {
        regeneration(ecran,perso,groupes);
             }
              if (tableau[a][b-1] == 'F')
             {
        levelup(ecran,perso,groupes);
             }
            break;


        recu dans levelup apresz c toujour pareil

        par contre la je t'ai mis toute la fonction defois que voudrai voir autre chose


        void levelup(SDL_Surface *ecran,joueur perso[],groupe groupes)
        {
        int a=0,j=0;
        SDL_Event event;
        int continuer =1,i=0;
        SDL_WaitEvent(&event);
        SDL_Surface *fond;
        fond = IMG_Load("image/combat/levelup.png");
        SDL_Rect pos,posface,position;
        pos.x=0;
        pos.y=0;
        posface.x=200;
        posface.y=200;
        position.x=0;
        position.y=0;
        TTF_Font *police =NULL,
                 *police2 =NULL;

        police = TTF_OpenFont("font/harlow.ttf",28);
        police2 = TTF_OpenFont("font/baskvill.ttf",28);
        SDL_Color couleur ={255,255,255};
        SDL_Color couleur2 ={50,220,50};
        SDL_Surface *texteaaffiche ;
        char texte[100]="";


            while (continuer)
            {


        //on efface l'ecran

        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255,255,255));
        SDL_BlitSurface(fond,NULL,ecran,&pos);

        //on affiche le titre
        position.x=200;
        position.y=50;
        sprintf(texte," level-up du  joueur %d pour %d",i+1,groupes.combienpourlevelup   );
        texteaaffiche = TTF_RenderText_Blended(police2,texte,couleur2 );
        SDL_BlitSurface(texteaaffiche,NULL,ecran,&position);



        //on affiche le level
        position.x=450;
        position.y=200;
        sprintf(texte,"Level : %d",perso[i].level);
        texteaaffiche = TTF_RenderText_Blended(police,texte,couleur );
        SDL_BlitSurface(texteaaffiche,NULL,ecran,&position);
        //on affiche la sante
        position.x=450;
        position.y=230;
        sprintf(texte,"Sante : %d / %d",perso[i].hp ,perso[i].hpmax );
        texteaaffiche = TTF_RenderText_Blended(police,texte,couleur );



        SDL_BlitSurface(texteaaffiche,NULL,ecran,&position);
        //on affiche la force
        position.x=450;
        position.y=260;
        sprintf(texte,"Force : %d ",perso[i].force );
        texteaaffiche = TTF_RenderText_Blended(police,texte,couleur );

        SDL_BlitSurface(texteaaffiche,NULL,ecran,&position);
        //on affiche l'agilite
        position.x=450;
        position.y=290;
        sprintf(texte,"Agilite : %d ",perso[i].agilite );
        texteaaffiche = TTF_RenderText_Blended(police,texte,couleur );
        SDL_BlitSurface(texteaaffiche,NULL,ecran,&position);
        //on affiche la chance
        position.x=450;
        position.y=320;
        sprintf(texte,"Chance : %d ",perso[i].chance);
        texteaaffiche = TTF_RenderText_Blended(police,texte,couleur );
        SDL_BlitSurface(texteaaffiche,NULL,ecran,&position);
        //on affiche la defence
        position.x=450;
        position.y=350;
        sprintf(texte,"Defense : %d ",perso[i].defense );
        texteaaffiche = TTF_RenderText_Blended(police,texte,couleur );
        SDL_BlitSurface(texteaaffiche,NULL,ecran,&position);


        //on affiche l'experience
        position.x=100;
        position.y=150;
        sprintf(texte,"Experience du groupe : %d ",groupes.experience );
        texteaaffiche = TTF_RenderText_Blended(police,texte,couleur );
        SDL_BlitSurface(texteaaffiche,NULL,ecran,&position);



        SDL_BlitSurface(perso[i].face,NULL,ecran,&posface);
        SDL_Flip(ecran);



        SDL_WaitEvent(&event);


        switch(event.type)
            {

        case SDL_QUIT:
        exit(1);
        break;

        case SDL_KEYDOWN: /* Si appui d'une touche */

                switch(event.key.keysym.sym)
                {
                         case SDLK_RETURN:
        continuer=0;
                        break;

                        case SDLK_RIGHT:
        i++;
        if (i==NOMBREDEJOUEUR)i=0;
                        break;

                         case SDLK_LEFT:
        i--;
        if (i<0) i=NOMBREDEJOUEUR-1;
                        break;
         case SDLK_UP:
        if (groupes.experience >groupes.combienpourlevelup)
        {
          groupes.experience -= groupes.combienpourlevelup;
           groupes.combienpourlevelup += 100;






             perso[i].hpmax += (rand()%20)+1;


             perso[i].force += (rand()%5)+1;

        j=(rand()%5)+1;
         if (j==2) perso[i].chance++ ;
         j=(rand()%3)+1;
         if (j==2)  perso[i].defense++;

            perso[i].level++;



        for (j=0;j<500;j++)
        {
            if (perso[i].level == j*10) perso[i].agilite ++;
            if (perso[i].agilite >40) perso[i].agilite =40;
        }

        }
        }
                        break;







            }
            }
        }



        merci d'avance

        • Partager sur Facebook
        • Partager sur Twitter
          28 juin 2006 à 0:30:36

          s'y j'ai bien compris(tous seul ) la premiere fois pour l'envoye il faut mettre &letruc a envoie recu par *le truc mais apres comme letruc == a l'adresse on l'envoy comme ca letruc recu *letruc

          ai je raison

          s'y vous comprennez mon charabiat :-°:-°

          ^^ merci
          • Partager sur Facebook
          • Partager sur Twitter

          pointeur dans une fonction

          × 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