des idées

This commit is contained in:
Mylloon 2023-12-29 02:19:06 +01:00
parent 828c912aa4
commit b79b4b8131
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
3 changed files with 26 additions and 9 deletions

View file

@ -31,8 +31,8 @@ public:
// Si piece = nullptr alors on retire la pièce du plateau
void modifierPlateau(const int x, const int y, Piece *piece) const;
// Fonction pour bouger une pièce
void moveSelection(const int x, const int y);
// Fonction pour bouger une pièce, renvoie les anciennes coordonnées
std::pair<int, int> moveSelection(const int x, const int y);
// Renvoie une pièce à une position donnnée
Piece *getPiece(const int x, const int y) const;

View file

@ -106,21 +106,32 @@ void Butin::event(const int x, const int y) {
break;
}
case EnJeu: {
if (!true) {
// TODO: Si plus aucun coup n'est possible
etape = Fini;
Ecran::printMessage("Bravo !");
}
// TODO
Piece *p = getPiece(posCurseur.first, posCurseur.second);
plateau.modifierSelection(posCurseur.first, posCurseur.second);
if (p == nullptr) {
// TODO - Si le coup est faisable
// TODO - Si le coup est faisable (définir dans PlateauButin ?)
if (true) {
plateau.moveSelection(posCurseur.first, posCurseur.second);
std::pair<int, int> from =
plateau.moveSelection(posCurseur.first, posCurseur.second);
// Coordonnées de départ : (from.first , from.second)
// Coordonnées d'arrivée : (posCurseur.first, posCurseur.second)
// TODO: Récupérer la/les pièce/s entre ces 2 coordonnées (définir dans
// PlateauButin ?)
// et ajouter les points aux joueurs
}
}
break;
}
case Fini: {
// TODO: Afficher le nom du gagnant
Ecran::printMessage("Bravo !");
break;
}
}

View file

@ -138,14 +138,18 @@ void Plateau::modifierSelection(const int x, const int y) {
}
}
void Plateau::moveSelection(const int x, const int y) {
std::pair<int, int> Plateau::moveSelection(const int x, const int y) {
if (selection == nullptr) {
// Ne fais rien si on a rien a bouger
return;
return std::make_pair(-1, -1);
}
// Récupère les coordonnées
std::pair<int, int> ancienneCoordonnees =
std::make_pair(selection->x, selection->y);
// Retire la pièce de là où elle est pour le plateau
plateau[selection->x][selection->y] = nullptr;
plateau[ancienneCoordonnees.first][ancienneCoordonnees.second] = nullptr;
// Déplace la pièce sur le plateau
modifierPlateau(x, y, selection);
@ -155,4 +159,6 @@ void Plateau::moveSelection(const int x, const int y) {
// Déselectionne la pièce
modifierSelection(x, y);
return ancienneCoordonnees;
}