implement missing declaration (operator<<)

This commit is contained in:
Mylloon 2023-12-14 17:51:27 +01:00
parent f5bfcc409d
commit adf9f747ed
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
9 changed files with 62 additions and 9 deletions

View file

@ -21,8 +21,8 @@ public:
// comment initialiser la fonction autrement // comment initialiser la fonction autrement
virtual void initialiserPlateau() = 0; virtual void initialiserPlateau() = 0;
// Fonction pour afficher le plateau (selon le jeu) // Fonction pour afficher le plateau (selon le jeu) vers une sortie
void afficherPlateau(const bool debug = false) const; void afficherPlateau(std::ostream &, const bool debug = false) const;
// Fonction pour modifier le plateau // Fonction pour modifier le plateau
void modifierPlateau(const int x, const int y, Piece *piece) const; void modifierPlateau(const int x, const int y, Piece *piece) const;

View file

@ -21,4 +21,10 @@ const Butin &Butin::operator=(const Butin &src) {
return *this; return *this;
} }
std::ostream &operator<<(std::ostream &out, const Butin &data) {
out << "j1: " << data.joueur1 << "\nj2: " << data.joueur2 << "\nPlateau:\n"
<< data.plateau;
return out;
}
void Butin::init() { plateau.initialiserPlateau(); } void Butin::init() { plateau.initialiserPlateau(); }

View file

@ -33,6 +33,12 @@ const Dames &Dames::operator=(const Dames &src) {
return *this; return *this;
} }
std::ostream &operator<<(std::ostream &out, const Dames &data) {
out << "j1: " << data.joueur1 << "\nj2: " << data.joueur2 << "\nPlateau:\n"
<< data.plateau;
return out;
}
void Dames::init() { plateau.initialiserPlateau(); } void Dames::init() { plateau.initialiserPlateau(); }
// TODO: A continuer // TODO: A continuer

View file

@ -13,3 +13,19 @@ const Joueur &Joueur::operator=(const Joueur &src) {
return *this; return *this;
} }
std::ostream &operator<<(std::ostream &out, const Joueur &data) {
out << "nom: " << data.nom << "\npieces: ";
if (data.pieces.empty()) {
out << "[]";
} else {
out << "[\n";
for (Piece *p : data.pieces) {
out << " " << *p << ",\n";
}
out << ']';
}
return out;
}

View file

@ -13,3 +13,9 @@ const Mouvement &Mouvement::operator=(const Mouvement &src) {
return *this; return *this;
} }
std::ostream &operator<<(std::ostream &out, const Mouvement &data) {
out << "source: (" << data.sourceX << ", " << data.sourceY
<< "), destination: (" << data.destX << ", " << data.destY << ")";
return out;
}

View file

@ -13,3 +13,8 @@ const Piece &Piece::operator=(const Piece &src) {
return *this; return *this;
} }
std::ostream &operator<<(std::ostream &out, const Piece &data) {
out << '"' << data.categorie << '"';
return out;
}

View file

@ -18,7 +18,12 @@ Plateau::~Plateau() {
delete[] plateau; delete[] plateau;
} }
void Plateau::afficherPlateau(const bool d) const { std::ostream &operator<<(std::ostream &out, const Plateau &data) {
data.afficherPlateau(out, false);
return out;
}
void Plateau::afficherPlateau(std::ostream &out, const bool d) const {
const float tailleCellule = const float tailleCellule =
static_cast<float>(Ecran::window.getSize().x) / taille; static_cast<float>(Ecran::window.getSize().x) / taille;
@ -37,19 +42,19 @@ void Plateau::afficherPlateau(const bool d) const {
// Position de la cellule // Position de la cellule
cell.setPosition(x, y); cell.setPosition(x, y);
if (d) { if (d) {
std::cout << "(" << x << ", " << y; out << "(" << x << ", " << y;
} }
// Alternation des couleurs // Alternation des couleurs
if ((i + j) % 2 == 0) { if ((i + j) % 2 == 0) {
cell.setFillColor(sf::Color::White); cell.setFillColor(sf::Color::White);
if (d) { if (d) {
std::cout << ", B), "; out << ", B), ";
} }
} else { } else {
cell.setFillColor(sf::Color::Black); cell.setFillColor(sf::Color::Black);
if (d) { if (d) {
std::cout << ", N), "; out << ", N), ";
} }
} }
@ -57,11 +62,11 @@ void Plateau::afficherPlateau(const bool d) const {
Ecran::window.draw(cell); Ecran::window.draw(cell);
} }
if (d) { if (d) {
std::cout << "\n"; out << "\n";
} }
} }
if (d) { if (d) {
std::cout << "---\n"; out << "---\n";
} }
} }

View file

@ -26,6 +26,13 @@ const Safari &Safari::operator=(const Safari &src) {
return *this; return *this;
} }
std::ostream &operator<<(std::ostream &out, const Safari &data) {
out << "j1: " << data.joueur1 << "\nj2: " << data.joueur2
<< "\nj3: " << data.joueur3 << "\nPlateau:\n"
<< data.plateau;
return out;
}
void Safari::init() { void Safari::init() {
// On peut donner que 2 joueurs ? // On peut donner que 2 joueurs ?
plateau.initialiserPlateau(); plateau.initialiserPlateau();

View file

@ -1,12 +1,14 @@
#include "../includes/Dames/PlateauDames.hpp" #include "../includes/Dames/PlateauDames.hpp"
#include "../includes/Ecran.hpp" #include "../includes/Ecran.hpp"
void draw_debug(PlateauDames &p) { p.afficherPlateau(std::cout, true); }
int main() { int main() {
Joueur j1; Joueur j1;
Joueur j2; Joueur j2;
PlateauDames p(j1, j2); PlateauDames p(j1, j2);
Ecran e; Ecran e;
// e.afficher(std::bind(&Plateau::afficherPlateau, &p, true)); // e.afficher(std::bind(&draw_debug, p));
return 0; return 0;
} }