ajoute des evenemts ?? j'ai pas réfléchi ou quoi jsp ce que je fais

This commit is contained in:
Mylloon 2023-12-28 18:01:50 +01:00
parent 32451df61a
commit 48bd1322cf
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
10 changed files with 75 additions and 6 deletions

View file

@ -12,10 +12,19 @@ class Butin : private Jeu {
// Joueurs
Joueur &joueur2;
bool j1PremierePiece = false;
bool j2PremierePiece = false;
public:
Butin(Joueur &joueur1, Joueur &joueur2); // constructor
virtual ~Butin(); // destructor
// Fonction d'initialisation du jeu
void init() override;
// Fonction de jeu
void play() override;
// Fonction d'évènement
void event(const int x, const int y) override;
};

View file

@ -19,6 +19,12 @@ public:
// Fonction d'initialisation du jeu
void init() override;
// Fonction de jeu
void play() override;
// Fonction d'évènement
void event(const int x, const int y) override;
// Vérifie si une prise est possible pour une pièce donnée
bool prisePossible(Joueur &joueur) const;
};

View file

@ -16,4 +16,10 @@ public:
// Fonction d'initialisation d'un jeu
virtual void init() = 0;
// Fonction qui fait le jeu
virtual void play() = 0;
// Fonction qui fait quelque-chose lors d'un clic gauche
virtual void event(const int xPos, const int yPos) = 0;
};

View file

@ -26,4 +26,7 @@ public:
// Fonction pour modifier le plateau
void modifierPlateau(const int x, const int y, Piece *piece) const;
// Prend des coordonnées écran et renvoie des coordonnées jeu
std::pair<int, int> trouveCoordonnees(const int x, const int y) const;
};

View file

@ -25,6 +25,12 @@ public:
// Fonction d'initialisation du jeu
void init() override;
// Fonction de jeu
void play() override;
// Fonction d'évènement
void event(const int x, const int y) override;
// Fonction d'initialisation du jeu
void choixAnimal(const PieceSafari::Categorie animal) const;
};

View file

@ -1,4 +1,5 @@
#include "../../includes/Butin/Butin.hpp"
#include "../../includes/Ecran.hpp"
Butin::Butin(Joueur &j1, Joueur &j2)
: Jeu(j1), plateau(PlateauButin()), joueur2{j2} {
@ -17,6 +18,26 @@ void Butin::init() {
plateau.initialiserPlateau();
// Demander à J1 de retirer une pièce jaune
Ecran::printMessage("Joueur 1, retirez une piece jaune en cliquant dessus.");
if (!j1PremierePiece) {
// Condition du clic
return;
}
// Demander à J2 de retirer une pièce jaune
Ecran::printMessage("Joueur 2, retirez une piece jaune en cliquant dessus.");
if (!j2PremierePiece) {
// Condition du clic
return;
}
}
void Butin::play() {
plateau.afficherPlateau(std::cout);
}
void Butin::event(const int x, const int y) {
auto pos = plateau.trouveCoordonnees(x, y);
std::cout << "Clic souris @ (" << x << ", " << y << ") aka (" << pos.first
<< ", " << pos.second << ")\n";
}

View file

@ -29,6 +29,12 @@ void Dames::init() {
plateau.initialiserPlateau();
}
void Dames::play() {
plateau.afficherPlateau(std::cout);
}
void Dames::event(const int, const int) {}
// TODO: A continuer
// Pas très sûre de comment procéder pour cette fonction : il faudrait vérifier
// les cases en diagnonale des pièces observées mais est-ce qu'il y a besoin que

View file

@ -26,11 +26,6 @@ std::ostream &operator<<(std::ostream &out, const Plateau &data) {
void Plateau::afficherPlateau(std::ostream &out, const bool d) const {
const float tailleCellule = static_cast<float>(Ecran::largeur()) / taille;
// Adapte la vue pour le redimensionnement
const float tailleFenetre = taille * tailleCellule;
Ecran::window.setView(
sf::View(sf::FloatRect(0, 0, tailleFenetre, Ecran::window.getSize().y)));
// Cellule
sf::RectangleShape cell(sf::Vector2f(tailleCellule, tailleCellule));
for (int i = 0; i < taille; i++) {
@ -76,3 +71,11 @@ void Plateau::modifierPlateau(const int x, const int y, Piece *piece) const {
throw std::invalid_argument("Coordonnées invalides");
}
}
std::pair<int, int> Plateau::trouveCoordonnees(const int x, const int y) const {
const float tailleCellule = static_cast<float>(Ecran::largeur()) / taille;
int xPlateau = static_cast<int>(x / tailleCellule);
int yPlateau = static_cast<int>(y / tailleCellule);
return std::make_pair(xPlateau, yPlateau);
}

View file

@ -27,6 +27,12 @@ void Safari::init() {
plateau.initialiserPlateau();
}
void Safari::play() {
plateau.afficherPlateau(std::cout);
}
void Safari::event(const int, const int) {}
void Safari::choixAnimal(const PieceSafari::Categorie animal) const {
if (animal == PieceSafari::Barriere) {
throw std::invalid_argument("Animal non valide");

View file

@ -36,7 +36,10 @@ int main(int argc, char const *argv[]) {
else if (arg.compare("butin") == 0) {
Joueur j2;
Butin(j1, j2);
Butin b(j1, j2);
b.init();
e.afficher({[&]() { b.play(); }},
{[&](const int x, const int y) { b.event(x, y); }});
}
else if (arg.compare("dames") == 0) {