TER M1 Jeu de stratégie historique

Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
TER M1 Jeu de stratégie historique

Forum du sujet de TER : Algorithme min-max dans les jeux de stratégie historique, pour les étudiants de M1 de Montpellier II 2008-2009.

-26%
Le deal à ne pas rater :
Bosch BBS8214 Aspirateur Balai Multifonction sans fil Unlimited ...
249.99 € 339.99 €
Voir le deal

3 participants

    Voila ce que j'ai fais pour le moment

    Quentin
    Quentin


    Messages : 120
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Voila ce que j'ai fais pour le moment

    Message  Quentin Sam 14 Fév - 21:09

    J'ai fais une classe Config.

    Code:
    Config test;
    test.lireFichierConfigUnitee("Donnees/Unites/fantassin_leger.cfg");
    test.showStatUnitee();
    test.lireFichierConfigTerrain("Donnees/Terrains/montagne.cfg");
    test.showStatTerrain();
    test.lireFichierConfigScenario("Donnees/Scenarios/Scenario1.cfg");
    test.showStatScenario();
    test.lireFichierConfigCarte("Donnees/Cartes/carte1.map");
    test.showStatCarte();

    ///   Example de recuperation de donnee
    caracUnite lunite = test.getCaracUnite();
    cout << lunite.imageUnite << endl;

    La fonction lireFichierConfigXXXX(file) lit le fichier de config qu'on lui donne (une fonction par type de fichier - Unite, Terrain, Scenario, Carte - ) et stocke les données dans une structure caracXXXX.

    La fonction showStatXXXX() fait juste un affichage (des cout) des données stocke dans une structure.

    -------------------------------------------------------------------------------------

    Ça te va ?



    J'imagine que tu veux juste qu'en faisant lireFichierConfigScenario("Donnees/Scenarios/Scenario1.cfg");
    lireFichierConfigScenario fasse appelle a lireFichierConfigCarte et lireFichierConfigUnitee.
    Et que lireFichierConfigCarte fasse appelle a lireFichierConfigTerrain
    Ce qui semblerais logique Wink

    Et justement....... je suis dessus cheers
    Cédric
    Cédric


    Messages : 205
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Cédric Sam 14 Fév - 22:54

    J'imagine que tu veux juste qu'en faisant lireFichierConfigScenario("Donnees/Scenarios/Scenario1.cfg");
    lireFichierConfigScenario fasse appelle a lireFichierConfigCarte et lireFichierConfigUnitee.
    C'était l'idée, mais justement, tu fais bien de me parler de ça : je viens de voir qu'il y a un truc qui n'ira pas :
    le fichier de scénario contient des id d'unités, et pour avoir ces id, il faut charger tous les types d'unités disponibles au préalable. Ca, c'est pas un problème. Par contre, c'est aussi le cas avec les cartes, et devoir charger systématiquement toutes les cartes, c'est un peu bizarre. Pour s'y retrouver sans trop se prendre la tête, il faudrait que ce qui est indiqué dans les fichiers de scénario soit le nom de la carte (carte1.map par ex) et non un identifiant. Donc plus besoin d'id pour les cartes. Mais bon, si pour le moment si ça te prend la tête laisse tomber. Ca n'empêche rien donc bon...

    Pour ce qui est du code, j'ai un peu du mal à voir ce que ça fait comme ça, mais tant qu'il se retrouve au final au sein de la fonction "GestionnaireDonnees::chargerDonnees(string scenario)" et qu'il charge bien les données, y'a pas grand chose à dire Very Happy

    Par contre, il faudrait à terme remplacer :
    Code:
    test.lireFichierConfigUnitee("Donnees/Unites/fantassin_leger.cfg");
    par un truc algorithmiquement du genre :
    Code:

    lister les fichiers du répertoire d'unités //il y a une constante donnant ce chemin dans Defines.h
    pour chaque fichier f trouvé
       chargerUnite(f)
    Quentin
    Quentin


    Messages : 120
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Quentin Dim 15 Fév - 4:21

    oué en faite l'id d'une carte c'est son nom de fichier plus le ".map" après Wink

    Bon voila, quand tu charge un scénario, le scénario charge tout les fichier config qu'il a besoin, la carte, les terrains et les unites.


    lister les fichiers du répertoire d'unités //il y a une constante donnant ce chemin dans Defines.h
    pour chaque fichier f trouvé
    chargerUnite(f)

    Par contre la, tu veux dire que le prog charge tout les fichier config au démarrage comme wesnot ou on charge seulement les fichier dont on a besoin au lancement d'un scénario ?
    avatar
    sebastien


    Messages : 137
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  sebastien Dim 15 Fév - 4:25

    Vu le nombre réduit d'unités différentes qu'on as autant tout charger au démarrage de l'appli nan ?
    Quentin
    Quentin


    Messages : 120
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Quentin Dim 15 Fév - 4:34

    oui peut être, ça dépend de ce que pensait Cédric. Me suis fais chier pour rien alors affraid
    Si on charge tout au démarrage, les map, terrain, scénarios et unités, c'est beaucoup plus facile a coder :p

    Tant pis pig
    Cédric
    Cédric


    Messages : 205
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Cédric Dim 15 Fév - 15:19

    C'était mon idée oui, même si globalement on s'en fout (à part justement que c'est bien plus facile Very Happy)
    Quentin
    Quentin


    Messages : 120
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Quentin Dim 15 Fév - 15:23

    ok je fais comme ça alors, on charge tout les fichiers de config au démarrage Wink
    C'est beaucoup plus simple :p
    Quentin
    Quentin


    Messages : 120
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Quentin Dim 15 Fév - 22:37

    Voila c'est bon j'ai une fonction void lireTousLesFichiersConfig() qui charge tout les fichiers de config dans une super structure. Et une fonction allCarac getAllCarac() qui permet de récupérer cette super structure.

    Les structures :
    - struct caracUnite
    - struct caracTerrain
    - struct caracCarte
    - struct caracScenario

    Chaque structures contiennent ce qu'il y a dans un fichier de config.
    exemple, la structure caracTerrain est composé de :
    - string idTerrain, nomTerrain, imageTerrain;
    - int altitude;


    La super structure :
    - struct allCarac

    Elle contient 9 structures d'Unités car il y a 9 unités différentes, 7 structures de Terrains.........

    -------------------------

    Pour utiliser tout ça, on fait comme ceci.

    Code:
    Config test;
    test.lireTousLesFichiersConfig();

    cout << test.getAllCarac().configUnite[0].imageUnite << endl;

    En sortie de console on aura Donnees/Images/Unites/archer.png car l'unité en position 0 (donc la première dans l'ordre alphabétique) est l'archer.
    On peut récupérer toutes les données dont on a besoin comme cela.

    cheers
    Quentin
    Quentin


    Messages : 120
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Quentin Dim 15 Fév - 22:51

    Cédric
    Cédric


    Messages : 205
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Cédric Dim 15 Fév - 23:29

    Bon, une chose de faite Very Happy

    Par contre, c'est pas que je veuille te démotiver, mais t'as fait la moitié du boulot pour rien :/
    Ce que je veux dire, c'est que vu qu'apparemment tu n'as pas du tout cherché à intégrer ton code au mien, il va falloir enlever tes structures de données et utiliser les miennes à la place, et faire qu'un appel à la méthode GestionnaireDonnees::chargerDonnees(string scenario) exécute ton code. Mine de rien, ça va te faire pas mal de lignes à modifier pour rien...

    Aussi, une petite remarque : quand tu écris...
    Code:
    struct allCarac
    {
        caracUnite configUnite[9]; // 9 unites differentes dans l'ordre alphabetique
        caracTerrain configTerrain[7]; // 7 terrains differents dans l'ordre alphabetique
        caracCarte configCarte[10]; // 10 map differentes dans l'ordre alphabetique
        caracScenario configScenario[10]; // 10 scenarios differents dans l'ordre alphabetique
    };
    ...tu bloques complètement toute évolution du programme. Si on veut ajouter une unité, t'es obligé de modifier le code et de recompiler. Pareil pour les terrains, cartes et scénarios. C'est pour ça que dans mes classes j'utilise plutôt des conteneurs STL (vector,deque, etc). Mais bon on s'en moque pas mal, vu que ça va disparaître.
    Quentin
    Quentin


    Messages : 120
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Quentin Lun 16 Fév - 1:01

    ...tu bloques complètement toute évolution du programme.

    oui mais c'est pas le joueur qui va ajouter des nouvelles unités, terrains .... c'est le développeur, donc on recompilera, ça dérange pas trop.


    Et pour le reste, il suffi de remplir tes structures avec mes structures. ça fera un loading un peut plus long au démarrage du prog, 1 seconde grand max cheers c'est pas trop un problème.
    Cédric
    Cédric


    Messages : 205
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Cédric Lun 16 Fév - 1:15

    Quentin a écrit:C'est sur que de faire tout en fichier txt que dans le code, c'est plus propre Laughing surtout qu'on peut le modifier facilement (et cheater aussi :p).
    Je suis ok !
    Quentin a écrit:oui mais c'est pas le joueur qui va ajouter des nouvelles unités, terrains .... c'est le développeur, donc on recompilera, ça dérange pas trop.
    Faudrait savoir ! Very Happy

    Bon, si t'es en overdose de chargement de fichiers (je comprend :p), c'est pas trop grave que tu adaptes ton code sans te prendre la tête pour le moment. Mais il faudra quand même y revenir tôt ou tard, parce que faire des fichiers d'un côté et coder des trucs en dur de l'autre, c'est quand même pas super cohérent ^^
    Quentin
    Quentin


    Messages : 120
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Quentin Lun 16 Fév - 1:21

    Si je comprend bien ton GestionnaireDonnees::chargerDonnees(const std::string &fichierScenario), on lui passe un scenario.cfg et il passe les données du scénar dans l'instance de partie.
    Donc suffi que dans ton chargerDonnees je vire le truc a la main et que je copie ce qui a dans mes structure dans partie et c'est bon ?
    cheers
    Quentin
    Quentin


    Messages : 120
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Quentin Lun 16 Fév - 1:24

    Cédric a écrit:Bon, si t'es en overdose de chargement de fichiers (je comprend :p), c'est pas trop grave que tu adaptes ton code sans te prendre la tête pour le moment. Mais il faudra quand même y revenir tôt ou tard, parce que faire des fichiers d'un côté et coder des trucs en dur de l'autre, c'est quand même pas super cohérent ^^

    ouai mais le truc qui te gène la, c'est que j'ai mis qu'on pouvait avoir que 9 unités différente, j'ai fais ça car j'aime pas les doubles pointeurs :p mais une fois que tout marche, c'est facile a changer.
    Cédric
    Cédric


    Messages : 205
    Date d'inscription : 24/01/2009

    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Cédric Lun 16 Fév - 1:35

    ...mais une fois que tout marche, c'est facile a changer.
    Pas faux ^^

    Si je comprend bien ton GestionnaireDonnees::chargerDonnees(const std::string &fichierScenario), on lui passe un scenario.cfg et il passe les données du scénar dans l'instance de partie.
    Donc suffi que dans ton chargerDonnees je vire le truc a la main et que je copie ce qui a dans mes structure dans partie et c'est bon ?
    cheers
    Oui oui. Et il crée aussi les TypeUnite et TypeCarte qui sont stockés dans GestionnaireDonnees.

    Contenu sponsorisé


    Voila ce que j'ai fais pour le moment Empty Re: Voila ce que j'ai fais pour le moment

    Message  Contenu sponsorisé


      La date/heure actuelle est Ven 17 Mai - 11:03