Partage
  • Partager sur Facebook
  • Partager sur Twitter

aléger le code car le programme est vraiment lent

Sujet résolu
    14 juin 2006 à 16:10:30

    Salut !
    J'ai commencer le codage d'un programme pour la fète des pères :
    Chaque membres de ma famille auraient leurs têtes dans le programme et mon père dirigerais sa tête toute les autres sont fixes...
    Et quand il veut voir le message qu'on lui à laisser il doit aller sur la photo de la personne de qui vient le message...
    Mais voilà le proble c'est que le programme ralentit vraiment alors qu'il ne fait que 4,28 MO !!
    Si vous pouviez m'aider à l'alléger et à l'améliorer...
    J'ai pas encore finit de tout coder mais vu qu'il est trop lent j'ai vraiment trop de mal a le tester....

    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_ttf.h>

    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *imageDeFond, *papa = NULL, *maman = NULL, *rachel = NULL, *josselin = NULL, *nathan = NULL, *texte = NULL, *message = NULL;
        SDL_Event event; //création de la variable pour les évènements !!
        TTF_Font *police = NULL; /* Stockera les informations de police */
        SDL_Color couleurNoire = {0, 0, 0};
        SDL_Rect positionFond, positionPapa, positionMaman, positionRachel, positionJosselin, positionNathan, positionTexte, positionMessage;
        positionFond.x = 0;
        positionFond.y = 0;
    positionPapa.x = 0;
    positionPapa.y = 0;
    positionMaman.x = 450;
    positionMaman.y = 200;
    positionRachel.x = 255;
    positionRachel.y = 120;
    positionJosselin.x = 200;
    positionJosselin.y = 450;
    positionNathan.x = 120;
    positionNathan.y = 255;

    int continuer = 1;//Booléen pour la boucle ^^
        SDL_Init(SDL_INIT_VIDEO);
            TTF_Init();

        ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
        SDL_WM_SetCaption("Bonne fete des pères !!", NULL);
        SDL_EnableKeyRepeat(10,10);
        while(continuer)
        {    //chargement de l'image BMP
        imageDeFond = SDL_LoadBMP("fond.BMP");
            //Blittage de l'image
        SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
        //Chargement de l'image de de Josselin
            josselin = SDL_LoadBMP("josselin.BMP");

        SDL_BlitSurface(josselin, NULL, ecran, &positionJosselin);

            //Chargement de l'image de de maman
            maman = SDL_LoadBMP("maman.BMP");

        SDL_BlitSurface(maman, NULL, ecran, &positionMaman);
                //Chargement de l'image de de Rachel
            rachel = SDL_LoadBMP("rachel.BMP");

        SDL_BlitSurface(rachel, NULL, ecran, &positionRachel);
                //Chargement de l'image de de Nathan
            nathan = SDL_LoadBMP("nathan.BMP");

        SDL_BlitSurface(nathan, NULL, ecran, &positionNathan);
                //Chargement de l'image de de Papa
            papa = SDL_LoadBMP("papa.BMP");
            SDL_BlitSurface(papa, NULL, ecran, &positionPapa);
                /* Chargement de la police */
        police = TTF_OpenFont("angelina.ttf", 65);
        /* Ecriture du texte dans la SDL_Surface "texte" en mode Blended (optimal) */
        texte = TTF_RenderText_Blended(police,"Bonne fete des peres !", couleurNoire);
    positionTexte.x = 250;
    positionTexte.y = 0;
            SDL_BlitSurface(texte, NULL, ecran, &positionTexte); /* Blit du texte par-dessus */
    positionMessage.x = 0;
    positionMessage.y = 250;

            SDL_BlitSurface(message, NULL, ecran, &positionMessage); /* Blit du texte par-dessus */
        SDL_Flip(ecran); // Mise à jour de l'écran
                        SDL_WaitEvent(&event);
                        switch(event.type)
                        {
                                          case SDL_QUIT:
                                               continuer=0;
                                               break;
                                               case SDL_KEYDOWN:
                                                    switch(event.key.keysym.sym)
                                                    {
                                                                                case SDLK_ESCAPE:
                                                    continuer=0;
                                                    case SDLK_UP://fleche haut
                                                    positionPapa.y--;
                                                    break;
                                                    case SDLK_DOWN://fleche bas
                                                    positionPapa.y++;
                                                    break;
                                                    case SDLK_RIGHT://fleche droite
                                                    positionPapa.x++;
                                                    break;
                                                    case SDLK_LEFT://fleche gauche
                                                    positionPapa.x--;
                                                    break;
                                                    case SDLK_SPACE://touche espace
    if (positionPapa.x == positionJosselin.x)
        {
         message = TTF_RenderText_Solid(police,"marche !!!!", couleurNoire);
        }

                                                    break;
                                               break;
                                               }
                                               break;
                                               }
                                               }
                                               
                    TTF_CloseFont(police);
        TTF_Quit();
        SDL_FreeSurface(imageDeFond); // Libération de la surface
        SDL_FreeSurface(texte);         
        SDL_Quit();

        return EXIT_SUCCESS;
    }


    Merci d'avance de vos aides :D
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      14 juin 2006 à 16:37:00

      Sors tes IMG_Load de ta boucle!!!
      • Partager sur Facebook
      • Partager sur Twitter
        14 juin 2006 à 16:46:03

        c'est fait mais là photo de mon père faut bien la laisser pour qu'elle bouge !! ;)
        et il faut que je mettes le fond dans la boucle aussi sinon y a une trainnée de la photo qui apparait ;)
        • Partager sur Facebook
        • Partager sur Twitter
          14 juin 2006 à 17:11:34

          Salut,
          tu fait tout tes IMG_Load avant la boucle et dans la boucle tu ne fait que les bliter.
          met aussi un SDL_DOUBLEBUF das SDL_SetVideoMode.
          @+
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            14 juin 2006 à 17:14:21

            Bah oui pour les bouger tu modifie leurs positions en x et en y ;Non les image que tu a charge.
            J'ai l'impressin que tu na pas trop bien compris le principe de Chargement=> Modifier position=> Blittage=> modifier position =>Blitagge...
            • Partager sur Facebook
            • Partager sur Twitter
              14 juin 2006 à 17:22:02

              excusez c'est à cause de la fatigue...

              EDIT : Merci ça marche très bien ^^
              Et en primes j'ai appris à saturé mon espace virtuelle et a faire planté parfaitement mon programme au bout d'un certain temps
              • Partager sur Facebook
              • Partager sur Twitter

              aléger le code car le programme est vraiment lent

              × 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