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 classe cpp


Sujet :

SDL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut SDL et classe cpp
    Bonjour,

    J'ai un niveau asser élevé de connaisaice en cpp. Alors je me susi donner un défis de construire un petit jeux en sdl.

    Bon voici j'ai 2 question.

    1) Dans ma boucle sans fin pour le jeux, j'utulise une classe Image comme ceci.

    Image * test;

    test = new Image("dir", 800, 600);

    BOn tout ceci fonctionne ma question est si a chaque lecture de la boucle, test serais recrée(recharger l'image e la redessiner).

    Mon autre question est si j'ai 2 object a dessiner qui utilise la meme image, est ce que je doit recharger l'image 2 fois?

    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    BOn tout ceci fonctionne ma question est si a chaque lecture de la boucle, test serais recrée(recharger l'image e la redessiner).
    Et bien s'il se trouve à l'intérieur de la boucle, il n'y a aucune raison que ce ne soit pas le cas. C'est pour cela qu'en général on place les initialisations avant la boucle.

    Mon autre question est si j'ai 2 object a dessiner qui utilise la meme image, est ce que je doit recharger l'image 2 fois?
    A part blinder inutilement la mémoire (vidéo ou non), cela ne sert pas à grand chose de charger la même image 2 fois en mémoire.

    Je me permet de te diriger vers mes tutoriels, qui concernent certes l'élaboration d'un moteur 3D, mais qui traitent aussi de la gestion des ressources et plus généralement de problèmes récurrents lors de la création d'applis graphiques.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 109
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    1/ Je te déconseille très fortement de recharger l'image à chaque fois. Pourquoi ne pas définir simplement une SDL_Surface* dès le début dans ton constructeur ? Il te suffit de blitter directement.
    Si tu as plusieurs images, rien ne t'empêche d'utiliser un vector ou list (ou autre) et d'afficher celle que tu veux.

    2/ Je pense qu'il nous faudrait les données-membres de ta classe image ( probablement un SDL_Surface* et un ou deux SDL_Rect* ??? )
    Si les images de tes objets pointent tous sur la même adresse, il faudra te méfier lors de la destruction de ces derniers. Loulou m'a conseillé les smart pointeurs, et bien il avait pas tort .

    3/ Va lire le post que je vais mettre sur les "outils de développement/C++" car j'ai des questions également qui peuvent t'intéresser.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci de voas répoce ters rapide. j'utulise 2 class. Une qui est Engine mon moteur principal et Image qui charche et affiche les image

    Je vous montre les entete.

    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
     
    class Engine {
    protected:
              //Variables membres
              static Engine* m_pEngine;
              char*          m_Title;
              int            m_Etape;
              int            m_Width;
              int            m_Height;
              int            m_Delay;
              int            m_Sleep;
              int            m_Exit;
              SDL_Surface    *Screen; 
     
     
    public:
           //Constructeur/destructeur
           Engine(char* m_bTitle, int m_bWidth, int m_bHeight);
     
           virtual ~Engine();
     
     
      //Méthodes générales
      int CreatWindow();    //Creation de la fenetre
      int EventKeyBoard();  //Gestion des evenement clavier
      int StartGame();      //Démare le jeux, menue etc
     
      //méthodes accesseurs
      char* GetTitle()  {return m_Title;}
      int   GetWidth()  {return m_Width;}
      int   GetHeight() {return m_Height;}
      int   GetDalay()  {return m_Delay;}
      int   GetSleep()  {return m_Sleep;}
      int   Exit()      {return m_Exit;}
     
     
    };
    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
     
    class Image {
    protected:
              //Variable membre
              static Image* m_pImage;
              char*  m_Name;
              int    m_Width;
              int    m_Height;
     
    public:
           //Constructeur/destructeur
           Image(char* m_bName, int m_bWidth, int m_bHeight);
     
           virtual ~Image();
     
           //Méthodes Générales
           int Load();
           int Draw();
     
           //méthodes accesseurs
           int GetWidth(){return m_Width;}
           int GetHeight(){return m_Height;}      
    };
    class image pas terminée

    (je lit le tutorial moteur 3d)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Mais il y a un truc que j'ai de la difficulté a pencé. C'est quand vus me dite de initié les image avant la boucle. Oui c une bonne idée, mais en revange, il vas surement avoir des centaine image total, et celle si vas changer selon des action qui vas se passé dans la boucle, alors comment faire pour arranger cela?(je ne c'est pas comment l'imaginer).

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Si tu as une seule image et que tu la recharges à chaque fois que tu veux en changer, alors tu n'es pas arrivé. Charge avant la boucle toutes les images dont tu auras besoin, chacune dans une instance de ta classe Image, et ensuite choisis selon le déroulement du jeu lesquelles afficher, à quel endroit, etc...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 109
    Points : 121
    Points
    121
    Par défaut
    Ah oui, mais ce n'est pas la même chose.

    Tu parles d'action, Loulou et moi te parlons de boucle. Or, combien d'actions fais-tu par secondes? Sûrement moins que l'ordinateur de boucles
    Là tu peux te permettre de charger un groupe d'images, le joueur n'y verra que du feu.
    C'est ce que j'ai fait d'ailleurs, si tu appuies par exemple sur "6", hop je charge l'animation de l'image vue de droite.


    Pour l'animation globale, là il faut essayer d'avoir initialiser le maximum. Je vois bien le problème héhé, c'est pas toujours évident.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci, Oui je sais c'est pas évident. car ce qui me complique la vie, c'est que c'est un jeux avec un menu, et plusieurs niveaux. alors je charge le menu, mais menue, (chaque image) alors ca ne val pas la peine de charger chaque niveau des le début, car si tu a 50 niveau bah ta p-e 50*10 image a charger des le debut, ca fait lourd un peu non?

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Evidemment rien ne sert de charger les images du niveau 138 si tu n'es qu'au niveau 4.

Discussions similaires

  1. Probleme lors de la creation dune nouvelle classe cpp en utilisant XCODE
    Par mounak1991 dans le forum Autres éditeurs
    Réponses: 18
    Dernier message: 21/05/2014, 17h37
  2. Utilisation d'une class cpp dans une DLL
    Par lolo13 dans le forum C++
    Réponses: 1
    Dernier message: 17/03/2010, 20h29
  3. [undefined reference]SDL + OpenGL + Dev-Cpp
    Par shenron666 dans le forum OpenGL
    Réponses: 3
    Dernier message: 25/04/2006, 14h56
  4. classe iostream sous dev-cpp
    Par yashiro dans le forum Dev-C++
    Réponses: 3
    Dernier message: 18/04/2006, 18h34
  5. Distribuer des classes sans le .cpp
    Par Patrick Seuret dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/04/2006, 10h22

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