Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
725 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Bien structurer mes classes ? (bis)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Bien structurer mes classes ? (bis)

n°1897366
magicpotu
Posté le 21-06-2009 à 14:20:54  profilanswer
 

Hello,
je suis en train de faire un petit jeu en C++ en console : un Rogue-like. Mon projet à déjà bien avancé, mais je viens de me rendre compte que j'ai fais un truc pas très jolie dans mon code. Et j'aurais besoin de vous pour savoir comment le faire bien.
 
Je vous explique la situation :  
J'ai une classe Donjon qui a comme attribut un tableau à deux dimension de Case. Cela me sert de map dans mon jeu. Les Cases ont comme attribut : char skin (qui est le char affiché à l'écran), bool is_obstacle, et bool is_visible.
 
Je n'ai que 5 types de Case dans mon jeu pour le moment :
Case vide (skin = ' '; is_obstacle = false)
Case porte (skin = '+'; is_obstacle = false)
Case escalier (skin = '>'; is_obstacle = false)
Case horizontale (skin = '-'; is_obstacle = true)
Case verticale (skin = '|'; is_obstacle = true)
Avec is_visible toujours à false à l'initialisation.
 
Pour le moment j'utilise un constructeur Case(char skin, bool is_obstacle), et pour tester le type de la case : char get_skin() { return skin; }
Bref, c'est vraiment mal foutus. Si je veux changer le skin d'un type de case ça me fait plein de modification, et puis c'est pas très jolie...
Comment organiser le code pour avoir plusieurs types de Case ? Faut il utiliser un enum ? De l'héritage ? Autre chose ?
 
Merci d'avance ! :)

mood
Publicité
Posté le 21-06-2009 à 14:20:54  profilanswer
 

n°1897369
Joel F
Real men use unique_ptr
Posté le 21-06-2009 à 15:00:54  profilanswer
 

Pattern Flyweight + Pattern Factory

n°1897380
magicpotu
Posté le 21-06-2009 à 17:14:57  profilanswer
 

Joel F a écrit :

Pattern Flyweight + Pattern Factory


Merci beaucoup pour ta réponse !
N'etant pas très à l'aise avec les Design Pattern, est ce que vous pouvez me confirmer que c'est bien ce genre de chose qu'il faut faire (j'ai juste utilisé Factory) :
 

Code :
  1. public Case {
  2. private:
  3.    char skin;
  4.    bool is_visible;
  5.    bool is_osbtacle;
  6. public:
  7.    Case(char skin, bool is_osbtacle) {
  8.       this->skin = skin;
  9.       this->is_obstacle = is_obstacle;
  10.       is_visible = false;
  11.    }
  12.    char get_skin() {
  13.       return (is_visible)? skin : '.';
  14.    }
  15.    bool get_is_visible() {
  16.       return is_visible;
  17.     }
  18.    bool get_is_obstacle() {
  19.       return is_obstacle;
  20.    }
  21. };
  22. public class CaseFactory {
  23. public:
  24.    Case get_case_empty() {
  25.       return new Case(' ', false);
  26.    }
  27.    Case get_case_door() {
  28.       return new Case('+', false);
  29.    }
  30.    Case get_case_stair() {
  31.       return new Case('>', false);
  32.    }
  33.  
  34.    Case get_case_horizontal() {
  35.       return new Case('-', false);
  36.    }
  37.  
  38.    Case get_case_vertical() {
  39.       return new Case('|', false);
  40.    }
  41. };
  42. main() {
  43.    CaseFactory c;
  44.    Case c1, c2;
  45.    c1 = c.get_case_door();
  46.    c2 = c.get_case_empty();
  47. }


 
?
Et si je veux tester le type de la case, comment faire ? Car c1.get_skin() == '>' c'est moche :/


Message édité par magicpotu le 21-06-2009 à 18:37:34
n°1897405
Joel F
Real men use unique_ptr
Posté le 21-06-2009 à 18:45:41  profilanswer
 

surcharge == pour Case


Message édité par Joel F le 21-06-2009 à 18:46:10

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Bien structurer mes classes ? (bis)

 

Sujets relatifs
[Résolu] Comment bien structurer mes classes ?[PHP] Varaibles de sessions et classes
question sur les classes[C#, Résolu] UserControl, classes en propriété et code du concepteur.
classes et base de données =/[AS3 - newbies] Mes questions pour bien débuter
Boutons et classesclasses imbriquées
Plus de sujets relatifs à : Bien structurer mes classes ? (bis)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR