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
|
||||
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;
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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) {
|
||||
|
|
Reference in a new issue