ajoute des evenemts ?? j'ai pas réfléchi ou quoi jsp ce que je fais
This commit is contained in:
parent
32451df61a
commit
48bd1322cf
10 changed files with 75 additions and 6 deletions
|
@ -12,10 +12,19 @@ class Butin : private Jeu {
|
||||||
// Joueurs
|
// Joueurs
|
||||||
Joueur &joueur2;
|
Joueur &joueur2;
|
||||||
|
|
||||||
|
bool j1PremierePiece = false;
|
||||||
|
bool j2PremierePiece = false;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Butin(Joueur &joueur1, Joueur &joueur2); // constructor
|
Butin(Joueur &joueur1, Joueur &joueur2); // constructor
|
||||||
virtual ~Butin(); // destructor
|
virtual ~Butin(); // destructor
|
||||||
|
|
||||||
// Fonction d'initialisation du jeu
|
// Fonction d'initialisation du jeu
|
||||||
void init() override;
|
void init() override;
|
||||||
|
|
||||||
|
// Fonction de jeu
|
||||||
|
void play() override;
|
||||||
|
|
||||||
|
// Fonction d'évènement
|
||||||
|
void event(const int x, const int y) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,6 +19,12 @@ public:
|
||||||
// Fonction d'initialisation du jeu
|
// Fonction d'initialisation du jeu
|
||||||
void init() override;
|
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
|
// Vérifie si une prise est possible pour une pièce donnée
|
||||||
bool prisePossible(Joueur &joueur) const;
|
bool prisePossible(Joueur &joueur) const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,4 +16,10 @@ public:
|
||||||
|
|
||||||
// Fonction d'initialisation d'un jeu
|
// Fonction d'initialisation d'un jeu
|
||||||
virtual void init() = 0;
|
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;
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,4 +26,7 @@ public:
|
||||||
|
|
||||||
// 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;
|
||||||
|
|
||||||
|
// Prend des coordonnées écran et renvoie des coordonnées jeu
|
||||||
|
std::pair<int, int> trouveCoordonnees(const int x, const int y) const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,6 +25,12 @@ public:
|
||||||
// Fonction d'initialisation du jeu
|
// Fonction d'initialisation du jeu
|
||||||
void init() override;
|
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
|
// Fonction d'initialisation du jeu
|
||||||
void choixAnimal(const PieceSafari::Categorie animal) const;
|
void choixAnimal(const PieceSafari::Categorie animal) const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "../../includes/Butin/Butin.hpp"
|
#include "../../includes/Butin/Butin.hpp"
|
||||||
|
#include "../../includes/Ecran.hpp"
|
||||||
|
|
||||||
Butin::Butin(Joueur &j1, Joueur &j2)
|
Butin::Butin(Joueur &j1, Joueur &j2)
|
||||||
: Jeu(j1), plateau(PlateauButin()), joueur2{j2} {
|
: Jeu(j1), plateau(PlateauButin()), joueur2{j2} {
|
||||||
|
@ -17,6 +18,26 @@ void Butin::init() {
|
||||||
plateau.initialiserPlateau();
|
plateau.initialiserPlateau();
|
||||||
|
|
||||||
// Demander à J1 de retirer une pièce jaune
|
// 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
|
// 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";
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,12 @@ void Dames::init() {
|
||||||
plateau.initialiserPlateau();
|
plateau.initialiserPlateau();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Dames::play() {
|
||||||
|
plateau.afficherPlateau(std::cout);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dames::event(const int, const int) {}
|
||||||
|
|
||||||
// TODO: A continuer
|
// TODO: A continuer
|
||||||
// Pas très sûre de comment procéder pour cette fonction : il faudrait vérifier
|
// 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
|
// les cases en diagnonale des pièces observées mais est-ce qu'il y a besoin que
|
||||||
|
|
|
@ -26,11 +26,6 @@ std::ostream &operator<<(std::ostream &out, const Plateau &data) {
|
||||||
void Plateau::afficherPlateau(std::ostream &out, const bool d) const {
|
void Plateau::afficherPlateau(std::ostream &out, const bool d) const {
|
||||||
const float tailleCellule = static_cast<float>(Ecran::largeur()) / taille;
|
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
|
// Cellule
|
||||||
sf::RectangleShape cell(sf::Vector2f(tailleCellule, tailleCellule));
|
sf::RectangleShape cell(sf::Vector2f(tailleCellule, tailleCellule));
|
||||||
for (int i = 0; i < taille; i++) {
|
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");
|
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);
|
||||||
|
}
|
||||||
|
|
|
@ -27,6 +27,12 @@ void Safari::init() {
|
||||||
plateau.initialiserPlateau();
|
plateau.initialiserPlateau();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Safari::play() {
|
||||||
|
plateau.afficherPlateau(std::cout);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Safari::event(const int, const int) {}
|
||||||
|
|
||||||
void Safari::choixAnimal(const PieceSafari::Categorie animal) const {
|
void Safari::choixAnimal(const PieceSafari::Categorie animal) const {
|
||||||
if (animal == PieceSafari::Barriere) {
|
if (animal == PieceSafari::Barriere) {
|
||||||
throw std::invalid_argument("Animal non valide");
|
throw std::invalid_argument("Animal non valide");
|
||||||
|
|
|
@ -36,7 +36,10 @@ int main(int argc, char const *argv[]) {
|
||||||
else if (arg.compare("butin") == 0) {
|
else if (arg.compare("butin") == 0) {
|
||||||
Joueur j2;
|
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) {
|
else if (arg.compare("dames") == 0) {
|
||||||
|
|
Reference in a new issue