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 // Fonction pour modifier le plateau
void modifierPlateau(const int x, const int y, Piece *piece) const; 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 // Prend des coordonnées écran et renvoie des coordonnées jeu
std::pair<int, int> trouveCoordonnees(const int x, const int y) const; std::pair<int, int> trouveCoordonnees(const int x, const int y) const;

View file

@ -6,20 +6,26 @@
PlateauButin::PlateauButin() : Plateau(8) {} 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() { void PlateauButin::initialiserPlateau() {
// Vecteur de toutes les pièeces du jeu // Vecteur de toutes les pièeces du jeu
std::vector<PieceButin> pieces; std::vector<PieceButin *> pieces;
for (int i = 0; i < 34; i++) { 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++) { 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++) { 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 // 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; int index = 0;
for (int i = 0; i < taille; i++) { for (int i = 0; i < taille; i++) {
for (int j = 0; j < taille; j++) { 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 { void Plateau::modifierPlateau(const int x, const int y, Piece *piece) const {
if (x >= 0 && x < taille && y >= 0 && y < taille) { if (x >= 0 && x < taille && y >= 0 && y < taille) {
if (piece == nullptr) {
delete plateau[x][y];
}
plateau[x][y] = piece; plateau[x][y] = piece;
} else { } else {
throw std::invalid_argument("Coordonnées invalides"); 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 { std::pair<int, int> Plateau::trouveCoordonnees(const int x, const int y) const {
const float tailleCellule = static_cast<float>(Ecran::largeur()) / taille; const float tailleCellule = static_cast<float>(Ecran::largeur()) / taille;