Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL et MFC

    3 novembre 2006 à 11:18:53

    Bonjour à tous et toutes

    Je suis tout nouveau et c'est mon premier post mais j'ai déjà lu le tuto sur a programmation SDL et je félicite son auteur car il est vraiment très très très bien fait. :D:D:D

    Par contre j'ai une petite question.

    Je programme depuis quelques temps déjà avec la bibliothèque MFC et je me demandais si on pouvais inclure cette bibliothèque dans un projet SDL. :o

    L'avantage serait de pouvoir utiliser les fonctionnalités des classes CString ou CObList par exemple pour faciliter la création des objets ou des classes dérivées pour créer des Map et des Joueur. :-°

    L'idées serait de créer des classes CMap et CCase qui dériveraient de CObList pour la première et d'une autre classe pour la seconde. ^^

    On pourrait utiliser le code des MFC pour la gestion des données et la SDL pour l'affichage.

    Est ce possible ? :euh:

    Merci de vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      3 novembre 2006 à 11:23:09

      les MFC ca m'étonerai par contre avec WxWidgets c'est tout a fait possible.
      • Partager sur Facebook
      • Partager sur Twitter
        3 novembre 2006 à 11:35:02

        Citation : dalican

        L'avantage serait de pouvoir utiliser les fonctionnalités des classes CString ou CObList par exemple pour faciliter la création des objets ou des classes dérivées pour créer des Map et des Joueur. :-°



        Aie aie aie vouloir utiliser MFC pour ça, ça me fait mal aux fesses.
        C++ = STL !!

        http://www.cppreference.com/index.html
        http://www.cppreference.com/cppstring/index.html
        http://www.cppreference.com/cppstl.html
        google
        • Partager sur Facebook
        • Partager sur Twitter
          3 novembre 2006 à 13:06:18

          merci du coup de main

          "Aie aie aie vouloir utiliser MFC pour ça, ça me fait mal aux fesses.
          C++ = STL !! "

          en tout cas c'est juste que c'est la librairie que je connais le mieux, j'ai pas dit que c'est celle qui fonctionnait le mieux et qui était la référence pour faire ce que je voulait.

          Par contre si tu pouvais m'en dire un peu plus sur STL ce serait sympa. Je suis pas tres pote avec les template...ça a toujours été mon point faible...le multi thread aussi, j'avoue... :(
          • Partager sur Facebook
          • Partager sur Twitter
            3 novembre 2006 à 13:09:31

            CString > std::string
            CObList >> don't know.
            Explique ce que tu veux en terme de français (et non MFC) et je te dirai comment c'est faisable.

            Ca serait bête de perdre la portabilité de la SDL en utilisant MFC juste pour des structures de données.
            • Partager sur Facebook
            • Partager sur Twitter
              3 novembre 2006 à 13:13:48

              je voudrai faire un jeu genre phantasy star avec des classes C++.
              une classe qui contient la map
              une classe pour chaque cas
              une pour chaque joueur

              ces classes seraient des classes derivees de classes de bases existante (on va pas reinvanter la roue tout de même)

              mais je voudrai savoir si on peut associer d'autres librairie dans un projet SDL

              comme ça on récupère les classes de bases puis on les dérive (pour faire le jeu)
              et on gère l'affichage avec la SDL

              voila le projet

              • Partager sur Facebook
              • Partager sur Twitter
                3 novembre 2006 à 13:45:56

                Tu t'égares. Je ne peux pas t'apprendre à faire un jeu mais te diriger vers des structures plus appropriées que ce que tu voulais utiliser.

                Je te donne un exemple :
                ////////OBJET.H///////////
                //Objet est une classe générique, virtuelle pure, elle doit être héritée.

                class Objet
                {
                public:
                        void Dessiner() = 0;
                };


                ///////ENTITYMANAGER.H//////
                #include "Objet.h"
                #include <map>
                #include <string>

                class EntityManager
                {
                public:
                        void DessineLaScene();
                        void addObjet(std::string name,Objet * objet);
                        Objet * getObjet(std::string name);
                        ~EntityManager();
                protected:
                        typedef std::map<std::string,Objet*> Scene;
                        Scene _scene;
                }



                ///////ENTITYMANAGER.CPP//////
                #include "EntityManager.h"

                using namespace std;

                void EntityManager::DessineLaScene()
                {
                        //qqchose avant ?
                        for (Scene::iterator it = _scene.begin(); it != _scene.end(); it ++)
                                (it->second)->Dessiner();
                        //qqchose apres ?
                }

                EntityManager::addObject(string name,Objet * objet)
                {
                        //insertion de base sans verifications
                        _scene[name] = objet;
                }

                Objet * EntityManager::getObjet(string name)
                {
                        //recup de base sans verif
                        return _scene[name];
                }

                EntityManager::~EntityManager()
                {
                        for (Scene::iterator it = _scene.begin(); it != _scene.end(); it ++)
                                delete it->second;
                }


                ///////PATATE.H////////
                class Patate : public Object
                {
                public:
                        void Dessiner();
                };

                ///////PATATE.CPP//////
                #include "Patate.h"

                Patate::Dessiner()
                {
                        //dessine une patate
                }


                //////MAIN.CPP////////

                #include "EntityManager.h"

                int main(...)
                {
                        //... init SDL

                        EntityManager manager;
                        Patate * lapatatechaude = new Patate();
                       
                        manager->addObject("patate pourrite",lapatatechaude);
                        //manager prend la main sur lapatatechaude, pas besoin de delete à la fin

                        for (;;)
                        {
                                manager.DessineLaScene();
                        }
                ...
                }
                • Partager sur Facebook
                • Partager sur Twitter
                  3 novembre 2006 à 14:06:46

                  Si je me trompe pas ton code me donne un exemple d'héritage...pas de template... :(

                  tu penses queje pourrai trouver un tuto pour la création et l'utilisation de templates ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 novembre 2006 à 14:17:29

                    Template n'est pas un mot magique. Cherche "matrix Opengl" sur le forum tu verras un exemple de template de matrice.
                    J'ai l'impression que tu mélanges BCP de notions C++ et que tu ne sais pas par où commencer.
                    Pourquoi n'irais-tu pas à ton rythme et nous dirais en détail pas les grandes lignes on s'en fout, ce que tu veux qu'on t'apporte...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 novembre 2006 à 14:29:35

                      bon ok j'explique
                      Quand j'ai appris le C++ j'ai appris 3 notions de base

                      encapsulation
                      polymorphisme
                      héritage

                      mais en plus viennent s'ajouter les templates qui sont des classes "modèles"
                      en fait ce sont des classes que j'arrive pas à définir mais qui sont différentes des classes de bases car elles sont génériques.

                      Par exemple, on peut faire un liste de classes générique qui contiendrait des pointeurs sur des objets générique ainsi on obtient une liste avec par exemple en objet 1 un entier, en objet 2 une chaine de caracteres, en objet 3 un flottant.

                      ça n'a rien a voir avec les classes héritées.

                      Par contre, pour en revenir au debut, je voudrai savoir si on peut utiliser une librairie de fonctions C++ en collaboration avec la librairie SDL. Apres si cette libairie n'est pas la MFC mais une autre qui serait aux norme ANSI c'est encore mieux.

                      Pour le jeu j'ai une piste mais je voudrai commencer par le début : aficher un MAP que je lis a partir d'un fichier. Pour ça je compte m'aider du tuto de m@teo21 : il est super pour ça.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 novembre 2006 à 14:41:08

                        Non une fois instancié ton template a le type que tu lui as donné et ne peux pas en avoir plusieurs, d'où le polymorphisme que je t'ai montré avec la map.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 novembre 2006 à 15:19:05

                          je suis d'accord avec toi

                          dans ma liste d'ojets génériques, objet 1 contenant l'entier est une instance de l'ojet generique contenu dans la liste et donc cet ojet est fixe.

                          Cela dit, est il possible d'inclure des librairies de fonctions en plus de la SDL pour faire un projet complet

                          exemple :
                          SDL : pour gérer l'affichage
                          +
                          librairies de classes C++ : pour gérer le "noyau" du jeu
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 novembre 2006 à 15:29:41

                            Oui tu peux linker/inclure autant de lib que tu veux du moment qu'elles ne sont pas en conflit.
                            Pour la STL par exemple... rien à linker, c'est "standard".

                            Exemple dans le cours : SDL + fmod.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 novembre 2006 à 15:55:01

                              merci a toi

                              pour mon projet je te donnerai la structure de ce que je veux faire comme ça tu comprendra mieux

                              si ça t'interesse bien sur

                              j'ai deja regardé les liens que tu m'as donné je pense que ça peux m'aider

                              a bientot j'espere et merci
                              • Partager sur Facebook
                              • Partager sur Twitter

                              SDL et MFC

                              × 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