im trying to make a 2d maze in console with c++11, but there is this segmentation fault error that doesńt let me generate the maze
I have tried to check all my pointers so im not trying to assign something to a null pointer
it might be in any of these methods:
i expect to generate the maze with 2 type of objects, empty and obstacle.
int Laberinto::ponerObjetoEnLaberinto(Objeto *objeto)
{
bool seEncontro = true;
for(int elemento=0; elemento< tablero.size(); elemento++)
{
if (objeto->get_fila()==tablero[elemento]->get_fila() and objeto->get_columna()==tablero[elemento]->get_columna())
{
cerr<<tablero[elemento]->comoTeLlamas()<<tablero[elemento]->get_fila()<<", "<<tablero[elemento]->get_columna()<<endl;
Objeto *borrar=tablero[elemento];
tablero[elemento]=objeto;
delete borrar;
cerr<<tablero[elemento]->comoTeLlamas()<<tablero[elemento]->get_fila()<<", "<<tablero[elemento]->get_columna()<<endl;
//cerr<<"ejemplo: "<<tablero[150]->comoTeLlamas()<<endl;
cerr<<tablero[elemento]->get_fila()<<", "<<tablero[elemento]->get_columna()<<endl;
return elemento;
}
else
{
seEncontro=false;
}
}
if (seEncontro == false)
{
return -1;
}
else
{
cerr<<"no se pudo poner el objeto"<<endl;
}
/*Objeto *objeto=new Objeto(objeto->get_fila(), objeto->get_columna(), comoTeLlamas());
int casilla = buscarCasilla(objeto);
delete objeto;
tablero[casilla]= vacia;
return vacia;*/
}
Objeto* Laberinto::queHayEnCasilla(int fila, int columna)
{
for(int elemento=0; elemento< tablero.size(); elemento++)
{
if (fila==tablero[elemento]->get_fila() and columna==tablero[elemento]->get_columna())
{
//cerr<<"que hay en casilla: "<<tablero[elemento]->comoTeLlamas()<<endl;
//cerr<<"nofunca"<<endl;
//cerr<<"fila columna: "<<fila<<", "<<columna<<endl;
//cerr<<"tablero chido: "<<tablero[elemento]->get_fila()<<", "<<tablero[elemento]->get_columna()<<endl;
return tablero[elemento];
}
else
{
//cerr<<"No se encontró ningún objeto en las coordenadas especificadas"<<endl;
}
}
Objeto* Laberinto::borrarObjeto(Objeto *objeto)
{
Objeto *vacia=new Vacia(objeto->get_fila(), objeto->get_columna());
ponerObjetoEnLaberinto(vacia);
//cerr<<objeto->comoTeLlamas()<<endl;
//cerr<<"AAAAAAA";
return vacia;
}
vector< pair<int,int> > Laberinto::crearCaminoAlAzar(int filaOrigen, int columnaOrigen, int filaDestino, int columnaDestino, int vertices){
for(int numvertices = 0; numvertices<vertices;numvertices++)
{
}
pair <int,int> vertice1 (filaOrigen, randint(0,ancho/2));
pair <int,int> vertice2 (randint(0,alto),vertice1.second);
pair <int,int> vertice3 (vertice2.first, randint(ancho/2,ancho));
pair <int,int> vertice4 (filaDestino, vertice3.second);
vector <pair<int,int>> coordenadas;
pair <int,int> inicio (filaOrigen,columnaOrigen);
coordenadas.push_back(inicio);
for (int camino1=1;camino1<vertice1.second;camino1++)
{
coordenadas.push_back(pair <int, int> (filaOrigen,camino1));
}
coordenadas.push_back(vertice1);
for (int camino2=vertice1.first;camino2<vertice2.first;camino2++)
{
coordenadas.push_back(pair <int, int> (camino2,vertice1.second));
}
coordenadas.push_back(vertice2);
for (int camino3=vertice2.second;camino3<vertice3.second;camino3++)
{
coordenadas.push_back(pair <int, int> (vertice2.first,camino3));
}
coordenadas.push_back(vertice3);
for (int camino4=vertice3.first;camino4<vertice4.first;camino4++)
{
coordenadas.push_back(pair <int, int> (camino4,vertice3.second));
}
coordenadas.push_back(vertice4);
for (int camino5=vertice4.second; camino5<columnaDestino;camino5++)
{
coordenadas.push_back(pair <int,int> (filaDestino,camino5));
cerr<<filaDestino<<", "<<camino5<<endl;
}
pair <int,int> final (filaDestino,columnaDestino);
coordenadas.push_back(final);
/*for (int contador = 0;contador<coordenadas.size();contador++)
{ cerr<< coordenadas[contador].first<<" "<<coordenadas[contador].second<<endl;
}
*/
return coordenadas;
}
Aucun commentaire:
Enregistrer un commentaire