Gère l'initialisation

This commit is contained in:
Mylloon 2023-12-28 19:55:50 +01:00
parent 8d3b8a7668
commit 59c232ac15
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
3 changed files with 34 additions and 10 deletions

View file

@ -3,6 +3,8 @@
#include "../Jeu.hpp" #include "../Jeu.hpp"
#include "PlateauButin.hpp" #include "PlateauButin.hpp"
struct PieceButin;
class Butin : private Jeu { class Butin : private Jeu {
friend std::ostream &operator<<(std::ostream &, const Butin &); friend std::ostream &operator<<(std::ostream &, const Butin &);
@ -22,6 +24,8 @@ class Butin : private Jeu {
enum Etape etape; enum Etape etape;
PieceButin *getPiece(const int x, const int y) const;
public: public:
Butin(Joueur &joueur1, Joueur &joueur2); // constructor Butin(Joueur &joueur1, Joueur &joueur2); // constructor
virtual ~Butin(); // destructor virtual ~Butin(); // destructor

View file

@ -1,8 +1,11 @@
#pragma once #pragma once
#include "../Piece.hpp" #include "../Piece.hpp"
#include "Butin.hpp"
struct PieceButin : public Piece { struct PieceButin : public Piece {
friend Butin;
enum Categorie { enum Categorie {
Jaune = 1, Jaune = 1,
Rouge = 2, Rouge = 2,

View file

@ -1,4 +1,5 @@
#include "../../includes/Butin/Butin.hpp" #include "../../includes/Butin/Butin.hpp"
#include "../../includes/Butin/PieceButin.hpp"
#include "../../includes/Ecran.hpp" #include "../../includes/Ecran.hpp"
Butin::Butin(Joueur &j1, Joueur &j2) Butin::Butin(Joueur &j1, Joueur &j2)
@ -14,6 +15,10 @@ std::ostream &operator<<(std::ostream &out, const Butin &data) {
return out; return out;
} }
PieceButin *Butin::getPiece(const int x, const int y) const {
return dynamic_cast<PieceButin *>(plateau.getPiece(x, y));
}
void Butin::init() { void Butin::init() {
plateau.initialiserPlateau(); plateau.initialiserPlateau();
@ -47,36 +52,48 @@ void Butin::event(const int x, const int y) {
} }
switch (etape) { switch (etape) {
case (Etape::ChoixJ1): case (Etape::ChoixJ1): {
// Clic du J1 // Clic du J1
// TODO: Vérifier que la pièce est jaune // Vérifier que la pièce est jaune
if (true) { if (getPiece(posCurseur.first, posCurseur.second)->points ==
// TODO: retirer une pièce PieceButin::Jaune) {
// Retire la pièce
plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr);
// On passe à l'étape suivante // On passe à l'étape suivante
etape = ChoixJ2; etape = ChoixJ2;
Ecran::printMessage( Ecran::printMessage(
"Joueur 2, retirez une piece jaune en cliquant dessus."); "Joueur 2, retirez une piece jaune en cliquant dessus.");
} else {
Ecran::printMessage("Joueur 1, retirez une piece jaune en cliquant "
"dessus. Mauvaise Pièce.");
} }
break; break;
case ChoixJ2: }
case ChoixJ2: {
// Clic du J2 // Clic du J2
// TODO: Vérifier que la pièce est jaune // Vérifier que la pièce est jaune
if (true) { if (getPiece(posCurseur.first, posCurseur.second)->points ==
// TODO: retirer une pièce PieceButin::Jaune) {
// Retire la pièce
plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr);
// On passe à l'étape suivante // On passe à l'étape suivante
etape = EnJeu; etape = EnJeu;
} }
break; break;
case EnJeu: }
case EnJeu: {
// TODO // TODO
break; break;
case Fini: }
case Fini: {
// TODO: Afficher le nom du gagnant // TODO: Afficher le nom du gagnant
Ecran::printMessage("Bravo !"); Ecran::printMessage("Bravo !");
break; break;
} }
}
// Texte de debug // Texte de debug
std::cout << "Clic souris @ (" << x << ", " << y << ") aka (" std::cout << "Clic souris @ (" << x << ", " << y << ") aka ("