fix init + fonction qui recupere une piece

This commit is contained in:
Mylloon 2023-12-28 19:40:06 +01:00
parent 97cae6fab8
commit 8d3b8a7668
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
3 changed files with 26 additions and 6 deletions

View file

@ -27,6 +27,9 @@ public:
// Fonction pour modifier le plateau
void modifierPlateau(const int x, const int y, Piece *piece) const;
// Renvoie une pièce à une position
Piece *getPiece(const int x, const int y) const;
// Prend des coordonnées écran et renvoie des coordonnées jeu
std::pair<int, int> trouveCoordonnees(const int x, const int y) const;

View file

@ -6,20 +6,26 @@
PlateauButin::PlateauButin() : Plateau(8) {}
PlateauButin::~PlateauButin() {}
PlateauButin::~PlateauButin() {
for (int i = 0; i < taille; i++) {
for (int j = 0; j < taille; j++) {
delete plateau[i][j];
}
}
}
void PlateauButin::initialiserPlateau() {
// Vecteur de toutes les pièeces du jeu
std::vector<PieceButin> pieces;
std::vector<PieceButin *> pieces;
for (int i = 0; i < 34; i++) {
pieces.push_back(PieceButin(PieceButin::Jaune));
pieces.push_back(new PieceButin(PieceButin::Jaune));
}
for (int i = 0; i < 20; i++) {
pieces.push_back(PieceButin(PieceButin::Rouge));
pieces.push_back(new PieceButin(PieceButin::Rouge));
}
for (int i = 0; i < 10; i++) {
pieces.push_back(PieceButin(PieceButin::Noire));
pieces.push_back(new PieceButin(PieceButin::Noire));
}
// Mélange le vecteur de pièces (j'ai jamais utilisé ça pour randomiser faudra
@ -32,7 +38,7 @@ void PlateauButin::initialiserPlateau() {
int index = 0;
for (int i = 0; i < taille; i++) {
for (int j = 0; j < taille; j++) {
plateau[i][j] = &pieces[static_cast<uint>(index++)];
plateau[i][j] = pieces[static_cast<uint>(index++)];
}
}
}

View file

@ -66,12 +66,23 @@ void Plateau::afficherPlateau(std::ostream &out, const bool d) const {
void Plateau::modifierPlateau(const int x, const int y, Piece *piece) const {
if (x >= 0 && x < taille && y >= 0 && y < taille) {
if (piece == nullptr) {
delete plateau[x][y];
}
plateau[x][y] = piece;
} else {
throw std::invalid_argument("Coordonnées invalides");
}
}
Piece *Plateau::getPiece(const int x, const int y) const {
if (x >= 0 && x < taille && y >= 0 && y < taille) {
return plateau[x][y];
} else {
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;