-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCarte.cpp
More file actions
132 lines (115 loc) · 2.74 KB
/
Copy pathCarte.cpp
File metadata and controls
132 lines (115 loc) · 2.74 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include "Carte.h"
namespace tp
{
/**
* \fn Carte::Carte(Sorte p_sorte, Valeur p_valeur)
*
* \param[in] p_sorte [optionnel] la sorte de la nouvelle carte. (defaut = pique)
* \param[in] p_valeur [optionnel] la valeur de la nouvelle carte. (defaut = as)
*/
Carte::Carte(Sorte p_sorte, Valeur p_valeur)
: m_sorte(p_sorte), m_valeur(p_valeur)
{
}
/**
* \fn Sorte Carte::reqSorte() const
*
* \return la sorte de la carte
*/
inline Sorte Carte::reqSorte() const
{
return m_sorte;
}
/**
* \fn Valeur Carte::reqValeur() const
*
* \return la valeur de la carte
*/
inline Valeur Carte::reqValeur() const
{
return m_valeur;
}
/**
* \fn void Carte::asgSorte(Sorte p_sorte)
*
* \param[in] p_sorte la nouvelle sorte de la carte
*/
void Carte::asgSorte(Sorte p_sorte)
{
m_sorte = p_sorte;
}
/**
* \fn void Carte::asgValeur(Sorte p_valeur)
*
* \param[in] p_valeur la nouvelle valeur de la carte
*/
void Carte::asgValeur(Valeur p_valeur)
{
m_valeur = p_valeur;
}
/**
* \fn bool Carte::estSuivante(const Carte &p_carte) const
*
* \param[in] p_carte la carte a superposer a la carte courante
*
* \return VRAI si la carte donnee peut etre superposee a la carte courante dans une pile
*/
bool Carte::estSuivante(const Carte &p_carte) const
{
return (m_sorte == p_carte.m_sorte && p_carte.m_valeur - m_valeur == 1);
}
/**
* \fn bool Carte::peutEmpiler(const Carte &p_carte) const
*
* \param[in] p_carte la carte a superposer a la carte courante
*
* \return vrai si la carte donee peut etre superposee a la carte courante dans une colonne
*/
bool Carte::peutEmpiler(const Carte &p_carte) const
{
return ((m_valeur - p_carte.m_valeur == 1) && !((m_sorte == PIQUE || m_sorte == TREFLE) ^ (p_carte.m_sorte == COEUR || p_carte.m_sorte == CARREAU)));
}
/**
* \fn std::ostream &operator<<(std::ostream &p_os, const Carte &p_carte)
*
* \param[in] p_os le flux de sortie
* \param[in] p_carte la carte a envoyer au flux de sortie
*
* \retour une reference sur le flux de sortie
*/
std::ostream &operator<<(std::ostream &p_os, const Carte &p_carte)
{
static std::string s_sorte[] =
{
"PI",
"CO",
"CA",
"TR",
};
static std::string s_valeur[] =
{
"AS",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"V",
"D",
"R",
};
#if defined(_WIN32)
p_os << s_valeur[(int)p_carte.reqValeur()] << "'" << s_sorte[(int)p_carte.reqSorte()];
#else
if (s_sorte[(int)p_carte.reqSorte()] == "CO" || s_sorte[(int)p_carte.reqSorte()] == "CA")
p_os << RED << s_valeur[(int)p_carte.reqValeur()] << "'" << s_sorte[(int)p_carte.reqSorte()] << RESETCOLOR;
else
p_os << GREEN << s_valeur[(int)p_carte.reqValeur()] << "'" << s_sorte[(int)p_carte.reqSorte()] << RESETCOLOR;
#endif
return p_os;
}
};