improved random generator, made information call from Part more direct
todo: add indexing to puzzlepieces and all four rotation into puzzlebox (or maybe only log?). this needs to be done for random algorithm and for realPuzzle
This commit is contained in:
parent
bd07d291db
commit
86c4e26bc7
@ -18,7 +18,7 @@ bool AbstractionLayer_1::EvaluateQuality (const coor constraintCoordinate, quali
|
|||||||
{
|
{
|
||||||
for(auto it = qVector.begin(); it != qVector.end(); it++)
|
for(auto it = qVector.begin(); it != qVector.end(); it++)
|
||||||
{
|
{
|
||||||
if(PlaceOfPartGood(constraintCoordinate, it->first->myLayers->m_test1.m_connections))
|
if(PlaceOfPartGood(constraintCoordinate, it->first->m_test1.m_connections))
|
||||||
continue;
|
continue;
|
||||||
qVector.erase(it++);
|
qVector.erase(it++);
|
||||||
}
|
}
|
||||||
@ -92,7 +92,7 @@ qualityVector AbstractionLayer_1::returnInBox(vector<Part>& PuzzleBox)
|
|||||||
int i=0;
|
int i=0;
|
||||||
for(int col=1;col<m_constraintMatrix.size()-1;col++)
|
for(int col=1;col<m_constraintMatrix.size()-1;col++)
|
||||||
for(int row=1;row<m_constraintMatrix[col].size()-1;row++)
|
for(int row=1;row<m_constraintMatrix[col].size()-1;row++)
|
||||||
PuzzleBox[i++].myLayers->m_test1.m_connections=m_constraintMatrix[col][row].m_connections;
|
PuzzleBox[i++].m_test1.m_connections=m_constraintMatrix[col][row].m_connections;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,4 +17,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //SOURCE_ABSTRACTIONLAYER_1_PROPERTIES_H
|
#endif //SOURCE_ABSTRACTIONLAYER_1_PROPERTIES_H
|
||||||
|
@ -5,25 +5,45 @@
|
|||||||
#include "../../header/solve.h"
|
#include "../../header/solve.h"
|
||||||
|
|
||||||
|
|
||||||
void Puzzle::printPuzzle() {}
|
void Puzzle::printPuzzle()
|
||||||
void Puzzle::putIntoBox() {}//puts a puzzlepiece back into its box
|
{
|
||||||
|
//print every layer individually for now and later make complete visual
|
||||||
|
}
|
||||||
|
|
||||||
|
//puts a puzzlepiece back into its box
|
||||||
|
void Puzzle::putIntoBox()
|
||||||
|
{
|
||||||
|
Part tmpPart;
|
||||||
|
for(int i=0;i<this->getSizeAsCoor().col;i++)
|
||||||
|
{
|
||||||
|
for(int j=0;j<this->getSizeAsCoor().row;j++)
|
||||||
|
{
|
||||||
|
//TODO! add rotation of all parts
|
||||||
|
//TODO! add id to every part (how)
|
||||||
|
tmpPart.m_test1=this->a1->m_constraintMatrix[i][j];
|
||||||
|
//TODO! add all other layers here
|
||||||
|
myBox.emplace_back(tmpPart);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//shuffles the existing box in Puzzle
|
//shuffles the existing box in Puzzle
|
||||||
void Puzzle::shuffle()
|
void Puzzle::shuffle()
|
||||||
{
|
{
|
||||||
random_shuffle(myBox.begin(),myBox.end());
|
random_shuffle(myBox.begin(),myBox.end());
|
||||||
for (auto &i:myBox)
|
|
||||||
{
|
|
||||||
//i.myLayers->m_test1
|
|
||||||
//shift(rand()%4,i);
|
|
||||||
//i.resetShift();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//deletes all constraints from all abstractionlayers
|
||||||
void Puzzle::removeConstrains(coor removeCoordinates) {}//deletes all constraints from all abstractionlayers
|
void Puzzle::removeConstrains(coor removeCoordinates)
|
||||||
|
{
|
||||||
|
this->a1->RemoveConstraintOnPosition(removeCoordinates);
|
||||||
|
}
|
||||||
|
|
||||||
void Puzzle::createRandomPuzzle()
|
void Puzzle::createRandomPuzzle()
|
||||||
{
|
{
|
||||||
a1->CreateRandomPuzzle();
|
a1->CreateRandomPuzzle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Puzzle::createp_box()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
@ -38,7 +38,8 @@ public:
|
|||||||
m_numOfRotations = numOfRotations;
|
m_numOfRotations = numOfRotations;
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerContainer* myLayers;
|
AbstractionLayer_1_Properties m_test1;
|
||||||
|
DestructionPower_Properties m_destruction;
|
||||||
private:
|
private:
|
||||||
int32_t m_partID;
|
int32_t m_partID;
|
||||||
uint8_t m_numOfRotations;
|
uint8_t m_numOfRotations;
|
||||||
|
@ -50,10 +50,11 @@ public:
|
|||||||
void removeConstrains(coor removeCoordinates);
|
void removeConstrains(coor removeCoordinates);
|
||||||
void printPuzzle();
|
void printPuzzle();
|
||||||
|
|
||||||
void createRandomBox(){createRandomPuzzle();putIntoBox();shuffle();}
|
void createRandomBox(){createRandomPuzzle();putIntoBox();shuffle();createp_box();}
|
||||||
void createRandomPuzzle();
|
void createRandomPuzzle();
|
||||||
void putIntoBox();
|
void putIntoBox();
|
||||||
void shuffle();
|
void shuffle();
|
||||||
|
void createp_box();
|
||||||
|
|
||||||
vector<Part> myBox;
|
vector<Part> myBox;
|
||||||
vector<Part*> p_myBox;
|
vector<Part*> p_myBox;
|
||||||
@ -64,14 +65,6 @@ private:
|
|||||||
unsigned int cols;
|
unsigned int cols;
|
||||||
};
|
};
|
||||||
|
|
||||||
class LayerContainer
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
AbstractionLayer_1_Properties m_test1;
|
|
||||||
DestructionPower_Properties m_destruction;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
bool next(vector<LogEntry>& log, vector<Part*>& p_Box, Puzzle& puzzleMat);
|
bool next(vector<LogEntry>& log, vector<Part*>& p_Box, Puzzle& puzzleMat);
|
||||||
coor calculateNextCoor(vector<LogEntry>& log, vector<Part*>& p_Box, Puzzle& puzzleMat);
|
coor calculateNextCoor(vector<LogEntry>& log, vector<Part*>& p_Box, Puzzle& puzzleMat);
|
||||||
void solve(vector<LogEntry>& log, vector<Part*>& p_Box, Puzzle& puzzleMat);
|
void solve(vector<LogEntry>& log, vector<Part*>& p_Box, Puzzle& puzzleMat);
|
||||||
|
@ -13,7 +13,6 @@ int main()
|
|||||||
|
|
||||||
//some advanced solver stuff
|
//some advanced solver stuff
|
||||||
vector<LogEntry> log;
|
vector<LogEntry> log;
|
||||||
vector<Part*> p_myFirstBox;
|
|
||||||
|
|
||||||
Puzzle puzzleMat(cols, rows);
|
Puzzle puzzleMat(cols, rows);
|
||||||
puzzleMat.createRandomBox();
|
puzzleMat.createRandomBox();
|
||||||
|
Loading…
Reference in New Issue
Block a user