Cluedo Solver v1.0
Cluedo game solver making deductions.
Loading...
Searching...
No Matches
Player.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "Card.hpp"
4#include "CardSet.hpp"
5
6#include <optional>
7#include <string>
8#include <vector>
9
12
13namespace Cluedo {
14
15class Solver;
16
27class Player {
28 friend Solver;
29
30public:
35 explicit Player(std::string const& name, std::size_t card_count)
36 : m_name(name), m_card_count(card_count) {}
37
41 std::string const& name() const { return m_name; }
45 std::size_t card_count() const { return m_card_count; }
46
50 std::optional<bool> has_card(Card card) const {
51 if (m_cards_in_hand.contains(card))
52 return true;
53
54 if (m_cards_not_in_hand.contains(card))
55 return false;
56
57 return {};
58 }
59
64 m_cards_in_hand.insert(card);
65 simplify_possibilities_with_card(card, true);
66 check_if_all_cards_in_hand();
67 }
68
73 m_cards_not_in_hand.insert(card);
74 simplify_possibilities_with_card(card, false);
75 check_if_all_cards_in_hand();
76 }
77
81 void add_possible_cards(CardSet const& set) {
82 m_possibilities.push_back(set);
83 remove_superfluous_possibilities();
84 check_if_all_cards_in_hand();
85 }
86
87private:
88 void simplify_possibilities_with_card(Card, bool has_card);
89 void remove_superfluous_possibilities();
90 void check_if_all_cards_in_hand();
91
92 std::string m_name;
93 std::size_t m_card_count;
94
95 CardSet m_cards_in_hand;
96 CardSet m_cards_not_in_hand;
97 std::vector<CardSet> m_possibilities;
98};
99
100};
The file that contains the definition of the Cluedo::CardSet class.
Card
All the cards in Cluedo.
Definition Card.hpp:66
A set of cards.
Definition CardSet.hpp:20
Player(std::string const &name, std::size_t card_count)
Definition Player.hpp:35
std::optional< bool > has_card(Card card) const
Definition Player.hpp:50
void add_in_hand_card(Card card)
Definition Player.hpp:63
std::size_t card_count() const
Definition Player.hpp:45
void add_not_in_hand_card(Card card)
Definition Player.hpp:72
void add_possible_cards(CardSet const &set)
Definition Player.hpp:81
std::string const & name() const
Definition Player.hpp:41
The solver of a Cluedo game.
Definition Solver.hpp:24