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 :

Correction de mes exercices en C++ moderne


Sujet :

C++

  1. #141
    Membre du Club Avatar de toto81
    Homme Profil pro
    Agent TNT Express
    Inscrit en
    Mai 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Agent TNT Express
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 67
    Points : 52
    Points
    52
    Par défaut
    Tiens, je viens de coder ma façon de voir le truc, ca sera plus simple pour toi de me dire ce que t'en pense:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    using Hand = std::vector<Carte>;
    
    class Player //Classe avec les infos du player
    {
    public:
    	//Construteurs
    	Player();
    
    	std::string name();
    
    	//Méthodes
    	virtual void place_bet(const Hand& h, std::vector<Bet>& bets) = 0; // une fonction abstraite
    	virtual void choose_cards_to_change(const Hand& h) = 0;	// une fonction abstraite
    
    protected:
    	Player(const std::string& name) : name_(name) {} // le constructeur est protégé; il ne faut pas instancier directement une classe abstraite
    
    private:
    	std::string name_;	//Nom du joueur à qui appartient cette classe
    	unsigned int money_;	//Montant des gains actuels du joueur
    	bool fold_;	//True si le joueur est couché
    };
    
    
    class Bet : public Player //Classe pour la partie enchere
    {
    public:
    	//Construteurs
    	Bet();
    	Bet(unsigned int bet);
    
    	//Méthodes
    	void place_bet(const Hand& h, std::vector<Bet>& bets);
    
    private:
    	unsigned int bet_;	//Montant de l'enchere
    };
    
    
    class Game //Classe du déroulement d'une partie à completer une fois la classe player bien avancé
    {
    public:
    	//Construteurs
    	Game();
    	Game(unsigned int bigBlind, unsigned int nbTurn, bool changeCard);
    
    	//Méthodes
    
    private:
    	unsigned int bigBlind_;	//Montant de la grosse bling, minimum à encherir
    	unsigned int nbTurn_;	//Nombre de tour d'enchere déjà effectué dans la partie
    	bool changeCard_;	//True si l'échange de carte a déjà été effectué
    };
    Si tu peux m'expliquer aussi les lignes en rouge car j'ai un peu de mal avec les constructeurs ^^

  2. #142
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Faire hériter Bet de Player me semble saugrenu... L'héritage est une relation d'identité: un joueur humain et un joueur humain sont des joueurs, on peut donc les faire hériter d'une classe Joueur commune; mais une enchère n'est certainement pas un joueur!

    Regardons quelques scénarios d'emploi à partir d'une implémentation minimaliste:

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct Bet {
       unsigned sum;
       std::shared_ptr<Game> game; // shared_ptr est un pointeur intelligent. Regarde la doc sur la référence
       std::shared_ptr<Player> player;
    };

    Pour des classes Game et Player dans le style:
    Code C++ : 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
     
    class Game {
      public:
      // ...
      unsigned turn() const;
      unsigned min_bet() const;
      unsigned max_bet() const;
      bool has_fold(const std::shared_ptr<Player>  p) const;
      unsigned latest_bet(const std::shared_ptr<Player>  p) const;
      // ...
    };
     
    class Player {
      public:
      // ...
      bool operator==(const Player& o) const;
      // ...
    };

    Mettons que dans la fonction IA_Player::place_bet nous voulions regarder si le joueur dont nous examinons l'enchère est un bluffeur. La class IA_Player a un membre potential_bluffers de type:
    std::vector<std::shared_ptr<Player>> potential_bluffers. Nous pouvons écrire:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    auto pb = std::find_if(std::begin(potential_bluffers), std::end(potential_bluffers), [](auto&& a, auto&& b) { return *a == *b; });
    bool pot_buf = pb != std::end(potential_bluffers); // si on n'a pas trouvé le joueur, pb == end(potential_bluffer), sinon il est différent.
    if (pot_buf == true) {
      // call bluff?
    }
    else {
      // be careful
    }

    En tout cas je maintiens mon conseil: tente d'avancer un peu par tes propres moyens, quitte à faire des erreurs, c'est comme ça que tu apprendras!

    Je reste dispo mais assez occupé en ce moment. Si tu veux avancer plus vite n'hésite pas à ouvrir de nouveaux sujets sur le forum sur des points particuliers, d'autres personnes te répondront!

Discussions similaires

  1. Problème dans la page de correction d'un exercice?
    Par menoulette dans le forum Langage
    Réponses: 4
    Dernier message: 30/08/2009, 23h57
  2. Réponses: 11
    Dernier message: 04/02/2008, 20h37
  3. Correction d'un exercice en C++
    Par aniscpp dans le forum C++
    Réponses: 2
    Dernier message: 07/12/2006, 14h01
  4. besoin d'une correction sur un exercice.
    Par phakso dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 03/03/2006, 10h01

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