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

C# Discussion :

Meilleur choix pour du code extensible


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Meilleur choix pour du code extensible
    Salut,

    Je développe actuellement un système de tiling isométrique en c# pour un jeu.

    Je souhaiterais créer une sorte de Framework de base que je pourrais étendre.

    La structure actuelle est :
    Map -> Block -> Tile

    Une map contient une liste de blocs qui contiennent eux même une liste de tiles.

    Le système gère automatiquement les positions de chacun des éléments (blocs et tiles).

    J'utilise ce système autant pour créer un éditeur de map que pour charger cette map dans le jeu mais j'aimerais spécialiser certaines choses dans les tiles et dans les blocks pour l'un ou l'autre cas.

    Je cherche donc a trouver le meilleur moyen d’étendre le code pour répondre a mon besoin.

    J'ai actuellement 3 classes : Map, Block et Tile et j'ai pensé à plusieurs solutions :

    - L’héritage : créer des sous classes de Block et Tile (EditorBlock, GameBlock ...) mais par défaut la classe Map instancie des Block et des Tile. Pour que ça fonctionne il faudrait que je lui passe le type de classes à instancier via un template (ex: Map<Block, Tile>, Map<EditorBlock, EditorTile> ...)

    - Le pattern decorator : décorer chacune des classes Block et Tile en lui ajoutant les fonctionnalités nécessaires mais ce n'est pas forcement quelque chose qui s'applique a mon cas et c'est assez fastidieux à mettre en place car les classes Block et Tile contiennent de nombreuses méthodes.

    Qu'en pensez vous ? Y-a-t-il une solution qui pourrait être meilleur ?

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    La solution de l'héritage me semble pas mal. Plutôt qu'une classe Map générique, tu pourrais utiliser des factories pour créer les Tiles et les Blocks, et passer ces factories à la classe Map pour pouvoir utiliser différents types de Tile et de Block :

    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
    private readonly ITileFactory _tileFactory;
    private readonly IBlockFactory _blockFactory
     
    // Map constructor
    public Map(ITileFactory tileFactory, IBlockFactory blockFactory)
    {
        _tileFactory = factory;
        _blockFactory = blockFactory;
    }
     
    private Tile CreateTile(int x, int y)
    {
        return _tileFactory.Create(x, y);
    }
     
    ...
     
    var editorMap = new Map(new EditorTileFactory(), new EditorBlockFactory());

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Merci
    Merci pour la réponse.

    C'est effectivement une très bonne idée: encapsuler ce qui varie grâce à des factory.

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

Discussions similaires

  1. Développement mobile : quel est le meilleur choix pour concevoir ses applications
    Par Stéphane le calme dans le forum Débats sur le développement - Le Best Of
    Réponses: 15
    Dernier message: 25/11/2013, 11h43
  2. Meilleurs choix pour faire évoluer tout un système
    Par Herbauges dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 20/06/2012, 18h20
  3. Meilleur choix pour 'table de travail'
    Par SergioMaster dans le forum Bases de données
    Réponses: 44
    Dernier message: 30/07/2007, 14h52
  4. Meilleur choix du système de fichiers pour son Linux ?!
    Par bnadem35 dans le forum Administration système
    Réponses: 15
    Dernier message: 04/07/2006, 16h14
  5. [C#]Quel meilleur choix pour présentation/logique/données?
    Par pmartin8 dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 22/03/2006, 22h35

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