Position
This commit is contained in:
parent
aca2abb55e
commit
0cf21f519a
15 changed files with 38 additions and 31 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
5
includes/types.hpp
Normal file
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include <utility>
|
||||
|
||||
using Position = std::pair<const int, const int>;
|
|
@ -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()) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.");
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Reference in a new issue