Segmentation error fixed

This commit is contained in:
TabDragon 2017-12-22 22:47:14 +01:00
parent bfed4aba05
commit a81c39125f
4 changed files with 21 additions and 13 deletions

View File

@ -36,11 +36,11 @@ bool AbstractionLayer_1::RemoveConstraintOnPosition(const coor constraintCoordin
bool AbstractionLayer_1::CreateRandomPuzzle()
{
std:: minstd_rand simple_rand;
std::minstd_rand simple_rand;
simple_rand.seed((unsigned int)"dumbo");
for(int col=1;col<m_constraintMatrix.size()-1;col++){
for(int row=1;row<m_constraintMatrix[col].size()-1;)
for(int col = 1; col < m_constraintMatrix.size()-1; col++){
for(int row = 1; row < (m_constraintMatrix[col].size() - 1);)
{
//create random piece
uint8_t tempPiece = 0b00000000;
@ -76,7 +76,10 @@ bool AbstractionLayer_1::CreateRandomPuzzle()
//set piece if piece good
if(PlaceOfPartGood(coor(col,row),tempPiece))
row++;
{
row++; // Sollte er hier nicht das Puzzleteil irgendwo abspeichern? Weiß aber nicht ob die constraint layer der richtige platz ist, oder nicht eine neue, bzw. die puzzlebox
m_constraintMatrix[col][row].m_connections = tempPiece;
}
}
}
@ -98,9 +101,9 @@ qualityVector AbstractionLayer_1::returnInBox(vector<Part>& PuzzleBox)
void AbstractionLayer_1::setEdgeZero()
{
for(int col=0;col<m_constraintMatrix.size();col++)
for(int row=0;row<m_constraintMatrix[col].size();row++)
if(col ==0 || col == m_constraintMatrix.size() || row == 0 || row == m_constraintMatrix[col].size())
for(int col = 0; col < m_constraintMatrix.size(); col++)
for(int row = 0; row < m_constraintMatrix[col].size(); row++)
if(col == 0 || col == (m_constraintMatrix.size() - 1) || row == 0 || row == (m_constraintMatrix[col].size() - 1))
m_constraintMatrix[col][row].m_connections=0b00000000;
}

View File

@ -20,7 +20,7 @@ void Puzzle::putIntoBox()
{
//TODO! add rotation of all parts
//TODO! add id to every part (how)
tmpPart.m_test1=this->a1->m_constraintMatrix[i][j];
tmpPart.m_test1=this->a1.m_constraintMatrix[i][j];
//TODO! add all other layers here
myBox.emplace_back(tmpPart);
}
@ -36,14 +36,15 @@ void Puzzle::shuffle()
//deletes all constraints from all abstractionlayers
void Puzzle::removeConstrains(coor removeCoordinates)
{
this->a1->RemoveConstraintOnPosition(removeCoordinates);
this->a1.RemoveConstraintOnPosition(removeCoordinates);
}
void Puzzle::createRandomPuzzle()
{
a1->CreateRandomPuzzle();
a1.CreateRandomPuzzle();
}
void Puzzle::createp_box()
{
}

View File

@ -73,7 +73,7 @@ void solve(vector<LogEntry>& log, vector<Part*>& p_Box, Puzzle& puzzleMat)
switch(log.back().abstractionLevel)
{
case 1:
puzzleMat.a1->EvaluateQuality(log.back().myCoor, log.back().PieceCollector);
puzzleMat.a1.EvaluateQuality(log.back().myCoor, log.back().PieceCollector);
break;
default:

View File

@ -39,13 +39,17 @@ private:
class Puzzle
{
public:
Puzzle(unsigned int newcols,unsigned int newrows):rows(newrows),cols(newcols){}
Puzzle(unsigned int newcols,unsigned int newrows):rows(newrows),cols(newcols)
{
a1.InitialiseConstraintMatrixSize(newcols+2, newrows+2);
a1.setEdgeZero();
}
coor getSizeAsCoor()
{return {cols,rows};}
DestructionPower* dp;
AbstractionLayer_1* a1;
AbstractionLayer_1 a1;
void removeConstrains(coor removeCoordinates);
void printPuzzle();