This commit is contained in:
Mylloon 2024-01-07 12:44:33 +01:00
parent aca2abb55e
commit 0cf21f519a
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
15 changed files with 38 additions and 31 deletions

View file

@ -35,16 +35,16 @@ class Butin : private Jeu {
const std::string msgTonTour() const;
// Message affichant le nombre de points
const std::string msgPoints(const std::pair<int, int> points) const;
const std::string msgPoints(const Position points) const;
// Position curseur
const std::pair<const int, const int> getPosition() const override;
const Position getPosition() const override;
// Change de joueur courant
void changerJoueurCourant();
// Renvoie le nombre de points des joueurs 1 et 2
std::pair<int, int> calculpoints(const bool finPartie = false) const;
Position calculpoints(const bool finPartie = false) const;
public:
Butin(Joueur &joueur1, Joueur &joueur2); // constructor

View file

@ -23,7 +23,7 @@ public:
void event(const int x, const int y) override;
// Position curseur
const std::pair<const int, const int> getPosition() const override;
const Position getPosition() const override;
// Vérifie si une prise est possible pour une pièce donnée
bool prisePossible(Joueur &joueur) const;

View file

@ -24,5 +24,5 @@ protected:
// Récupère la position du curseur
// Virtuelle car on aimerais vérifier que le curseur n'est pas en dehors du
// plateau et on accès à aucun plateau ici
virtual const std::pair<const int, const int> getPosition() const = 0;
virtual const Position getPosition() const = 0;
};

View file

@ -1,5 +1,6 @@
#pragma once
#include "types.hpp"
#include <SFML/Graphics/Color.hpp>
#include <iostream>
@ -33,7 +34,7 @@ public:
virtual const sf::Color getScreenColor() const = 0;
// Renvoie la position de la pièce
const std::pair<const int, const int> getPos() const;
const Position getPos() const;
// Renvoie si la pièce est selectionnée
bool isSelectionnee() const;

View file

@ -1,6 +1,7 @@
#pragma once
#include "../includes/Piece.hpp"
#include "types.hpp"
#include <vector>
class Plateau {
@ -33,14 +34,13 @@ public:
// Fonction pour bouger une pièce, renvoie les anciennes coordonnées de la
// pièce bougée (TODO: est-ce utile de renvoyer les anciennes coordonnées ?)
const std::pair<const int, const int> moveSelection(const int x, const int y);
const Position moveSelection(const int x, const int y);
// Renvoie une pièce à une position donnnée
Piece *getPiece(const int x, const int y) const;
// Prend des coordonnées-écran et renvoie des coordonnées-jeu
const std::pair<const int, const int> trouveCoordonnees(const int x,
const int y) const;
const Position trouveCoordonnees(const int x, const int y) const;
// Renvoie la taille du plateau
int getTaille() const;

View file

@ -8,6 +8,9 @@ class PlateauSafari : public Plateau {
// Barrières
std::vector<PieceSafari *> barrieres;
std::pair<int, int> placementBarriere1;
std::pair<int, int> placementBarriere2;
public:
PlateauSafari();
virtual ~PlateauSafari();

View file

@ -39,7 +39,7 @@ class Safari : private Jeu {
PieceSafari *getPiece(Piece *) const;
// Position curseur
const std::pair<const int, const int> getPosition() const override;
const Position getPosition() const override;
// Change de joueur courant
void changerJoueurCourant();

5
includes/types.hpp Normal file
View file

@ -0,0 +1,5 @@
#pragma once
#include <utility>
using Position = std::pair<const int, const int>;

View file

@ -39,7 +39,7 @@ const std::string Butin::msgTonTour() const {
", c'est votre tour. " + msgPoints(calculpoints());
}
const std::string Butin::msgPoints(const std::pair<int, int> points) const {
const std::string Butin::msgPoints(Position points) const {
return "J1 : " + std::to_string(points.first) + " vs " +
std::to_string(points.second) + " : J2";
}
@ -124,7 +124,7 @@ void Butin::event(const int x, const int y) {
// Mange les pièces sur le chemin
for (const Piece *it : chemin) {
// Récupère la pièce
const std::pair<const int, const int> pos = it->getPos();
const Position pos = it->getPos();
Piece *gain = plateau.getPiece(pos.first, pos.second);
// Retire la pièce
@ -160,7 +160,7 @@ void Butin::event(const int x, const int y) {
}
}
const std::pair<const int, const int> Butin::getPosition() const {
const Position Butin::getPosition() const {
if (posCurseur.second > plateau.getTaille() - 1) {
std::cerr << "Position inconnu du plateau.\n";
return std::make_pair(-1, -1);
@ -177,7 +177,7 @@ void Butin::changerJoueurCourant() {
}
}
std::pair<int, int> Butin::calculpoints(const bool end) const {
Position Butin::calculpoints(const bool end) const {
// Nombre de points des joueurs
int j1 = 0, j2 = 0;
for (const Piece *it : joueur1.getPieces()) {

View file

@ -47,7 +47,7 @@ void PlateauButin::initialiserPlateau() {
const std::vector<const Piece *>
PlateauButin::cheminPieces(const int destX, const int destY) const {
const std::pair<const int, const int> posSelection = selection->getPos();
const Position posSelection = selection->getPos();
return cheminPieces(posSelection.first, posSelection.second, destX, destY);
}
@ -104,10 +104,10 @@ bool PlateauButin::selectionJaune() const {
bool PlateauButin::coupsPossible() const {
// Liste des cases vides
std::vector<std::pair<const int, const int>> casesVides;
std::vector<Position> casesVides;
// Liste des pièces jaunes
std::vector<std::pair<const int, const int>> piecesJaunes;
std::vector<Position> piecesJaunes;
for (int i = 0; i < taille; ++i) {
for (int j = 0; j < taille; ++j) {
@ -124,9 +124,9 @@ bool PlateauButin::coupsPossible() const {
}
}
for (std::pair<const int, const int> p : piecesJaunes) {
for (Position p : piecesJaunes) {
// Parmis toutes les pièces jaunes
for (std::pair<const int, const int> it : casesVides) {
for (Position it : casesVides) {
// Si le déplacement vers une case vide peut donner des points
if (!cheminPieces(p.first, p.second, it.first, it.second).empty()) {
return true;

View file

@ -32,7 +32,7 @@ void Dames::play() {
void Dames::event(const int, const int) {}
const std::pair<const int, const int> Dames::getPosition() const {
const Position Dames::getPosition() const {
if (posCurseur.second > plateau.getTaille() - 1) {
std::cerr << "Position inconnu du plateau.\n";
return std::make_pair(-1, -1);
@ -52,7 +52,7 @@ bool Dames::prisePossible(Joueur &joueur) const {
int y = 1;
for (uint i = 0; i < pieces.size(); i++) {
const PieceDames *p = dynamic_cast<const PieceDames *>(pieces[i]);
const std::pair<const int, const int> pos = p->getPos();
const Position pos = p->getPos();
if (!p) {
throw std::runtime_error("Cette pièce est.. étrange.");
}

View file

@ -23,6 +23,6 @@ bool Piece::isSelectionnee() const {
return selected;
}
const std::pair<const int, const int> Piece::getPos() const {
const Position Piece::getPos() const {
return std::make_pair(x, y);
}

View file

@ -109,8 +109,7 @@ Piece *Plateau::getPiece(const int x, const int y) const {
}
}
const std::pair<const int, const int>
Plateau::trouveCoordonnees(const int x, const int y) const {
const Position Plateau::trouveCoordonnees(const int x, const int y) const {
const float tailleCelluleX = static_cast<float>(Ecran::largeur()) / taille;
const float tailleCelluleY = static_cast<float>(Ecran::hauteur()) / taille;
@ -143,15 +142,14 @@ void Plateau::modifierSelection(const int x, const int y) {
}
}
const std::pair<const int, const int> Plateau::moveSelection(const int x,
const int y) {
const Position Plateau::moveSelection(const int x, const int y) {
if (selection == nullptr) {
// Ne fais rien si on a rien a bouger
return std::make_pair(-1, -1);
}
// Récupère les coordonnées
const std::pair<const int, const int> ancienneCoordonnees =
const Position ancienneCoordonnees =
std::make_pair(selection->x, selection->y);
// Retire la pièce de là où elle est pour le plateau

View file

@ -116,7 +116,7 @@ void PlateauSafari::afficherPlateau(std::ostream &out, const bool d) const {
}
bool PlateauSafari::deplacementValide(const int x, const int y) const {
std::pair<const int, const int> posInitiale = selection->getPos();
Position posInitiale = selection->getPos();
return std::abs(x - posInitiale.first) == 0 ||
std::abs(y - posInitiale.second) == 0;

View file

@ -50,7 +50,7 @@ const std::string Safari::msgTonTour() const {
action =
"déplacez un " + getPiece(joueurCourant->getPieces().at(0))->getName();
} else {
action = "placez une barrière";
action = "placez une barrière en cliquant sur 2 cases";
}
return "Joueur " + std::to_string(joueurCourant->getNum()) + ", " + action +
@ -76,7 +76,7 @@ void Safari::play() {
// Pas de joueur 3
// On retire le dernier choix d'animal
const Piece *p = plateau.getPieces().at(0);
std::pair<const int, const int> pos = p->getPos();
Position pos = p->getPos();
plateau.modifierPlateau(pos.first, pos.second, nullptr);
delete p;
@ -238,7 +238,7 @@ void Safari::event(const int x, const int y) {
}
}
const std::pair<const int, const int> Safari::getPosition() const {
const Position Safari::getPosition() const {
if (posCurseur.second > plateau.getTaille() - 1) {
std::cerr << "Position inconnu du plateau.\n";
return std::make_pair(-1, -1);