fixed game logic
This commit is contained in:
@@ -11,19 +11,19 @@
|
||||
Generator::Generator() {
|
||||
}
|
||||
|
||||
std::vector<Polyomino> Generator::generatePolyominos(int polyominoSize) {
|
||||
this->validPolyominos.clear();
|
||||
std::vector<Polyomino> Generator::generatePolyominoes(int polyominoSize) {
|
||||
this->validPolyominoes.clear();
|
||||
this->currentTestedShape.clear();
|
||||
|
||||
// a polyomino has at least 1 square
|
||||
if (polyominoSize < 1) return this->validPolyominos;
|
||||
if (polyominoSize < 1) return this->validPolyominoes;
|
||||
|
||||
// always place the first cell at (0, 0)
|
||||
this->currentTestedShape.insert(Position{0, 0});
|
||||
|
||||
std::map<Position, int> candidatePositions;
|
||||
this->generate(polyominoSize, 0, 1, candidatePositions);
|
||||
return this->validPolyominos;
|
||||
return this->validPolyominoes;
|
||||
}
|
||||
|
||||
void Generator::generate(int polyominoSize, int lastAddedPositionNumber, int nextAvaibleNumber, std::map<Position, int> candidatePositions) {
|
||||
@@ -31,7 +31,7 @@ void Generator::generate(int polyominoSize, int lastAddedPositionNumber, int nex
|
||||
if (polyominoSize == this->currentTestedShape.size()) {
|
||||
Polyomino candidate(this->currentTestedShape);
|
||||
|
||||
// we sort the rotations of the polyominos
|
||||
// we sort the rotations of the polyominoes
|
||||
std::vector<Polyomino> candidateRotations;
|
||||
candidateRotations.reserve(4);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
@@ -43,7 +43,7 @@ void Generator::generate(int polyominoSize, int lastAddedPositionNumber, int nex
|
||||
|
||||
// we keep the polyomino only if it was generated in its lowest rotation
|
||||
if (candidate == candidateRotations.at(0)) {
|
||||
this->validPolyominos.push_back(candidate);
|
||||
this->validPolyominoes.push_back(candidate);
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user