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

Développement 2D, 3D et Jeux Discussion :

SDL dans les classes


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut SDL dans les classes
    bonjours a tous

    j'ai un petit soucis avec sdl et les classes en C++

    voila un exemple de mon code tres simple
    le main :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    #include <iostream>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_ttf.h>
     
    #include "menu.cpp"
     
    using namespace std;
     
    int main(){
    	//declaration des variables 	
      SDL_Surface *ecran = NULL;
      Menu menu;
     
     
    //initialisation SDL
      if(SDL_Init(SDL_INIT_VIDEO)==-1){
        cerr<<"Erreur initialisation sdl"<<endl;
        exit(EXIT_FAILURE);
      }
     
    //initialisation TTF
      if(TTF_Init()==-1){
        cerr<<"Erreur initialisation de ttf"<<endl;
        exit(EXIT_FAILURE);
      }
     
    //ouverture d'une fenetre SDL
      ecran = SDL_SetVideoMode( 800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF ); 
      if (ecran == NULL){
        cerr<< "Impossible de charger le mode vidéo"<<endl;
        exit(EXIT_FAILURE);
      }
      SDL_WM_SetCaption(" othello" , NULL );
     
     
      menu=new Menu(ecran);
      SDL_Delay(10000);
     
     
    //fermeture de SDL et TTF  
      TTF_Quit();
      SDL_Quit();
     
    }
    la seule classe pour le momment :
    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
    #include <iostream>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_ttf.h>
     
    using namespace std;
     
    class Menu{
     
    //variables 
      SDL_Surface *ecran=NULL, *texteIntro=NULL;
      TTF_Font *policeIntro=NULL;
     
    public:
     
      Menu(SDL_Surface *ecran);
      ~Menu();
    };
     
     
    //constructeur
    Menu::Menu(SDL_Surface *ecran){
      this->ecran=ecran;
     
    }
     
     
    //destructeur 
    Menu::~Menu(){
     
      SDL_FreeSurface(texte);
      TTF_CloseFont(police);
     
    }
    et mon makefile :
    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
    SOURCES =	main.cpp
    OBJECTS	=	$(SOURCES:.cpp=.o)
    TARGET	=	othello	
    LIBS	=	$(shell sdl-config --libs) -lSDL_image -lSDL_ttf -lGL -lGLU 
     
    all: $(OBJECTS)
    	g++ $(LIBS) -o $(TARGET) $(OBJECTS)
     
    %o: %cpp
    	g++ -o $@ -c $<
     
    x: all
    	./$(TARGET)
     
    clean:
    	rm -rf $(OBJECTS)
     
    superclean : clean
    	rm -rf $(TARGET)

    alors avec tout ca j'ai un probleme de compilation au niveau des variables de la classe menu mon compilo me pale d'erreur ISO C++ fofbids initialization of member ... making <<...>> static ( les ... c'est les noms des variables et il me le met pour chaque variables )

    mon but etant de developper des classes dans lesquelles je ferais passer l'ecran pour pouvoir l'effacer le metre à jour etc ... c'est donc assez ennuyeux et comme je ne suis pas un pro de la prog objet c++ je fais donc appelle a vous.
    Comment faire pour declarer mes pointeurs SDL_Surface corectement dans mes classes et les faire passer d'une classe à l'autre par les constructeurs ?
    merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    alors avec tout ca j'ai un probleme de compilation au niveau des variables de la classe menu mon compilo me pale d'erreur ISO C++ fofbids initialization of member ... making <<...>> static ( les ... c'est les noms des variables et il me le met pour chaque variables )
    Logique, il n'aime pas qu'on donne des valeurs par défaut aux membres d'une classe. Il faut le faire dans le constructeur...

    mon but etant de developper des classes dans lesquelles je ferais passer l'ecran pour pouvoir l'effacer le metre à jour etc ... c'est donc assez ennuyeux et comme je ne suis pas un pro de la prog objet c++ je fais donc appelle a vous.
    Comment faire pour declarer mes pointeurs SDL_Surface corectement dans mes classes et les faire passer d'une classe à l'autre par les constructeurs ?
    merci d'avance
    Je ne suis pas sûr de toute comprendre dans ce que tu veux faire mais visiblement tu as besoin de revoir tes bases de C++ avant de continuer. Dans ton code, certaines choses ne semblent pas corrects :

    - Inclusion d'un .cpp
    - Définition de la classe dans un .cpp
    - Utilisation de TTF_CloseFont sans aucune preuve que la police a été créée
    - Pas de définition du constructeur vide
    - Utilisation de l'opérateur new pour une variable et non un pointeur...

    Toutes ces choses sont plutôt par rapport au C++, je te conseille de suivre les tutoriels que tu trouveras :

    http://jeux.developpez.com pour bien comprendre comment on peut s'y prendre...

    Jc

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    J'ajoute que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      SDL_FreeSurface(texte);
    Il n'y a aucune variable qui s'appelle texte dans ta classe.
    Idem pour police.

    Ta fonction main est de type int mais tu ne renvois rien.

    Sinon, je suis du même avis que fearyourself, tu devrais revoir tes bases de C++.


    Edit :
    J'ajoute également que dans ton makefile, tu inclus des bibliothèque qui ne servent à rien.

    Je ne répondrai à aucune question technique en privé

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    héhé merci d'avoir répondu aussi vite
    alors les erreurs qui m'embettaient on disparues ^^ grâce a vous

    les problemes avec les pointeurs c'etait bien parce que je les mettaient a NULL
    et puis parce que je mettais pas ma variable menu en pointeur dans le main
    ensuite pour les variables texte et police c'est un grossière erreur de ma par : j'ai réécris le main et menu qui sont des partie simplifiées de mon projet pour vous poster mon probleme j'ai fais le boulet c'est texteIntro et policeIntro en fait
    et puis les lib en plus dans le makefiles c'est pour le chargement de textures avec
    glut ( je combine opengl et sdl sur la version 3D )


    pour l'apprentissage des classes j utilise votre tuto http://glouise.developpez.com/classes/
    riche en enseignement merci bien

    et puis je met ma classe dans un .cpp car je programme sous linux et j'ai pas encore d'IDE qui me fait les .h et .cpp en quelque clic alors je m'embrouille moins comme ça ( je pense metre bientot eclipse mais je vais avoir du mal a lacher mon emacs ^^)

  5. #5
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par thekaz

    et puis je met ma classe dans un .cpp car je programme sous linux et j'ai pas encore d'IDE qui me fait les .h et .cpp en quelque clic alors je m'embrouille moins comme ça ( je pense metre bientot eclipse mais je vais avoir du mal a lacher mon emacs ^^)
    Ce n'est pas une excuse... Je n'utilise que vi et je fais des fichiers séparés.. Les bonnes habitudes, faut les prendre dès le début...

    Jc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Ordre Alphabétique]Objets dans les classes !
    Par kinji dans le forum Designer
    Réponses: 6
    Dernier message: 12/12/2007, 18h30
  2. Réponses: 9
    Dernier message: 20/08/2007, 20h39
  3. fopen dans les classes
    Par poussinphp dans le forum C++
    Réponses: 5
    Dernier message: 06/07/2006, 01h08
  4. [C++] Pb avec les variable static dans les classe
    Par quantik-revolution dans le forum C++
    Réponses: 3
    Dernier message: 03/03/2006, 18h40
  5. [preferences] pouvoir débuguer dans les classes de JAVA
    Par Satch dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 25/01/2006, 13h23

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