Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ma class pour faire une animation plante

il n'y a pas d'erreur mais le prog se ferme

    18 mai 2007 à 17:11:06

    Bonjour

    J'ai une autre erreur a cause de ma class Animation : cette class va chercher dans un dossier toutes les images dans l'ordre croissant(1.qqch, 2.qqch). On donne l'extension des images. La class mes charge ensuite toutes les images et les met dans un tableau.

    Pour les afficher, il fait simplement un SDL_BlitSurface avec une boucle(j'attend de voir la vitesse de l'animation actuelle avant de ralentir)

    Ensuite dans ma fonction aventure(que j'appelle dans mon main), je créé mon objet, je lui donne toutes les indications puis je la lance. Soit le programme plante, soit il se ferme, soit il ne fait rien.

    Premiere question : est-ce que ma class a une bonne methode ou est-ce qu'il y a une methode plus simple?

    Deuzieme question : Sauriez vous comment enlever ce problème??

    Voici les bout de code qui font l'animation :
    Animation::Animation(std::string cheminAnim, std::string extension, int nbrImage, int positionX, int positionY, int vitesse, int repeat) //constructeur
    {
        m_DossierAnim = cheminAnim;
        m_Extension = extension;
        m_NbrImage = nbrImage;
        m_Vitesse = vitesse;
        m_Repeat = repeat;
        m_PositionX = positionX;
        m_PositionY = positionY;

        m_Image = new SDL_Surface[m_NbrImage];

        for(int i = 0 ; i < m_NbrImage ; i++)
        {
            ostringstream oss;
            oss << m_DossierAnim << i << '.' << m_Extension;
            string chemin = oss.str();
            const char* cheminC = chemin.c_str();

            SDL_Surface* m_Image[i];
            m_Image[i] = IMG_Load(cheminC);

            if(m_Image[i] == NULL)
            {
                fprintf(stderr, "Impossible de lire %s\n", cheminC);
                exit(EXIT_FAILURE);
            }
        }
    }

    void Animation::play(SDL_Surface* ecran)//methode pour lancer l'animation
    {
        SDL_Rect position;
        position.x = m_PositionX;
        position.y = m_PositionY;

        for(int j = 0 ; j <= m_Repeat ; j++)
        {
            for(int i = 0 ; i <= m_NbrImage ; i += m_Vitesse)
            {
                SDL_BlitSurface(&m_Image[i], NULL, ecran, &position);
            }
        }
    }


    Et voici comment je cré l'objet :
        ostringstream oss1, oss2;
        oss1 << "data/animation/aventure/menu/";
        oss2 << "jpg";
        string chemin = oss1.str(), extension = oss2.str();

        Animation animationMenu(chemin, extension, 3, 0, 0);

        bool continuer = true;
        SDL_Event event;

        while(continuer)
        {
            SDL_WaitEvent(&event);

            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = false;
                    break;

                case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                        case SDLK_ESCAPE:
                            continuer = false;
                            break;
                    }

                    if(event.key.keysym.sym == SDLK_F4)
                    {
                        if(KMOD_LALT)
                            continuer = false;
                    }
                    break;
            }

            animationMenu.play(ecran);
            SDL_Flip(ecran);
        }


    Je ne vois pas comment le résoudre

    Merci d'avances pour les réponses
    • Partager sur Facebook
    • Partager sur Twitter

    Ma class pour faire une animation plante

    × 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