optimization!
This commit is contained in:
parent
920d25daae
commit
5d345cd183
1 changed files with 26 additions and 14 deletions
|
@ -96,7 +96,7 @@ std::vector<Piece *> PlateauButin::cheminPieces(const int depX, const int depY,
|
|||
|
||||
bool PlateauButin::selectionJaune() const {
|
||||
if (selection) {
|
||||
return dynamic_cast<PieceButin *>(selection)->getPoints() ==
|
||||
return dynamic_cast<const PieceButin *>(selection)->getPoints() ==
|
||||
PieceButin::Jaune;
|
||||
}
|
||||
|
||||
|
@ -104,25 +104,37 @@ bool PlateauButin::selectionJaune() const {
|
|||
}
|
||||
|
||||
bool PlateauButin::coupsPossible() const {
|
||||
// Liste des cases vides
|
||||
std::vector<std::pair<int, int>> casesVides;
|
||||
|
||||
// Liste des pièces jaunes
|
||||
std::vector<std::pair<int, int>> piecesJaunes;
|
||||
|
||||
for (int i = 0; i < taille; ++i) {
|
||||
for (int j = 0; j < taille; ++j) {
|
||||
const PieceButin *piece = dynamic_cast<const PieceButin *>(plateau[i][j]);
|
||||
if (piece && piece->getPoints() == PieceButin::Jaune) {
|
||||
if (plateau[i][j] == nullptr) {
|
||||
// Si case vide
|
||||
casesVides.push_back(std::make_pair(i, j));
|
||||
} else {
|
||||
// Sinon
|
||||
if (dynamic_cast<const PieceButin *>(plateau[i][j])->getPoints() ==
|
||||
PieceButin::Jaune) {
|
||||
// Si pièce jaune
|
||||
piecesJaunes.push_back(std::make_pair(i, j));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (std::pair<int, int> p : piecesJaunes) {
|
||||
// Parmis toutes les pièces jaunes
|
||||
for (int i2 = 0; i2 < taille; ++i2) {
|
||||
for (int j2 = 0; j2 < taille; ++j2) {
|
||||
// Regarde par rapport aux cases vides
|
||||
if (plateau[i2][j2] == nullptr) {
|
||||
// Si le déplacement d'une pièce peut donner des points
|
||||
if (!cheminPieces(i, j, i2, j2).empty()) {
|
||||
for (std::pair<int, int> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
Reference in a new issue