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 :

Problème Design Pattern : Help


Sujet :

C++

  1. #1
    Membre du Club Avatar de donkeyquote
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 195
    Points : 52
    Points
    52
    Par défaut Problème Design Pattern : Help
    Bonjour,

    Je suis entrain de faire un petit simulateur d'une bataille, peut-être pour après faire un petit jeux de rôle...

    J'ai une classe "Game" qui contient une liste des joueurs. Les joueurs peuvent être de type "Human" ou de type "Computer".
    Pour l'instant je n'ai mis qu'un Computer à la fin de ma liste et un Human, en espérant pouvoir faire ainsi des tests.

    Les "Human" et "Computer" derivent de la classe "Player" qui contient la méthode abstraite "attack()". Grace à cette méthode un Human ou Computer peuvent attaquer un element "DestructibleElement" d'un adversaire (considérons que tous les elements de la liste _ListPlayers sont énémies entre eux).

    Mon problème c'est que je ne sais pas comment créer une référence global pour chaque element de la liste _ListPlayers afin qu'on puisse cibler l'attaque d'un joueur vers un "DestructibleElement" d'un adversaire qui se trouve également dans _ListPlayers.

    J'ai écris en sorte de "pseudocode" ou se trouve mon pb, lignes 34 et 39 de "Human.cpp" et lignes 56 et 65 de "Computer.cpp" des fichiers joints.

    Je crois qu'il faut appliquer un désign pattern pour gérer ça (un singleton ?). J'en ai entendu parler mais malheureusement je ne les connais pas et encore moins leurs implémentations

    Quelqu'un peut m'aider avec ça? Pouvez vous m'illustrer comment faire svp ?

    Merci beaucoup de votre aide !

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Pourquoi tu ne passes pas tout simplement _ListPlayers en paramètre à attack depuis Game::run ?

    MAT.

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Le DP "mediator" (désolé pour le lien en anglais ), appliqué dans "Game" ne serait il pas intéressant

    Ce serait Game qui dirait à l'un "doAttack(l'autre)" et, à l'autre "isAttackedBy(lepremier)"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre du Club Avatar de donkeyquote
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 195
    Points : 52
    Points
    52
    Par défaut
    Je pense avoir resolu mon problème précédent, mais maintenant après avoir fait quelques modifs dans les constructeurs je trouve un core dumped par segmentation faut....

    J'ai commencé à tracer et pense que c'est à cause de l'initialisation des attributs à partir des constructeurs (DestructibleElement() <- WarElement() <- Catapulte ), mais je ne sais pas de quoi il s'agit...

    Je mets en pièce jointe ma nouvelle version all_v2. Si vous pouvez jetter un coup d'oeil et me donner un coup de main ça serait super.

    Merci d'avance...

    Au fait le site des désigns patterns est génial !!!

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    Extrait de DestructibleElement.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	std::cout<<"Building an DestructibleElement. Points of life "<<iPointsOfLife<<std::endl;
    	std::cout<<"       Power ??"<<std::endl;
    	char* c;
    	std::cin>>c;
    c pointe dans le vide!!!! Idem pour toutes les autres fonctions où tu utilise cin.

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Un petit conseil, en passant...

    Tu devrais vraiment préférer l'utilisation de la classe string, disponible par inclusion du fichier d'en-tête <string> dans l'espace de nommage std pour tout ce qui a trait à la gestion de chaîne de caractères à la gestion "C style" (tableau de caractères terminés par '\0')...

    Cela t'évitera pas mal de soucis d'allocation de mémoire non effectuée, ou de mémoire allouée en quantité insuffisante
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. Problème avec le design pattern visitor
    Par RT222 dans le forum Langage
    Réponses: 5
    Dernier message: 13/05/2012, 20h28
  2. Réponses: 2
    Dernier message: 26/12/2010, 22h08
  3. Problème de Design Pattern
    Par Quartus dans le forum JSF
    Réponses: 11
    Dernier message: 23/08/2010, 11h11
  4. Problème d'accessibilité avec le design patterns MVC
    Par radical_bombtracks dans le forum JSF
    Réponses: 5
    Dernier message: 24/07/2007, 13h15
  5. Réponses: 5
    Dernier message: 10/05/2007, 16h03

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