我遇到了一些我无法解决的分段错误问题,也许有人可以看看它?更多信息如下。 该计划应该产生一个“完美”的迷宫。
Maze.cp http://pastebin.com/gYazVk4h
Maze.h http://pastebin.com/cT4GddgB
的main.cpp
#include "Maze.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <getopt.h> // includes the getopt command for input flags
#include <stdlib.h> // for EXIT_FAILURE and EXIT_SUCCESS
#include <stack>
using namespace std;
int main(int argc, char const *argv[])
{
Maze labyrinth;
labyrinth.Create_maze(15, 40);
labyrinth.Print_maze();
return 0;
}
我也可以粘贴其他两个文件,但我相信将它们放在pastebin上更聪明,因为它们非常大?
无论如何,当我运行它时,我会遇到分段错误。 注1 : 在第38行和第39行,您必须取消注释while循环并注释掉for循环。 我正在使用for循环进行调试。
注2 : 我认为问题出在第119-121行,但我不确定,我尝试了各种各样的方法,无法弄清楚如何解决它。
注3 : 我正在遵循Mazeworks DOT com中的以下伪代码:
create a CellStack (LIFO) to hold a list of cell locations
set TotalCells = number of cells in grid
choose a cell at random and call it CurrentCell
set VisitedCells = 1
while VisitedCells < TotalCells
find all neighbors of CurrentCell with all walls intact
if one or more found
choose one at random
knock down the wall between it and CurrentCell
push CurrentCell location on the CellStack
make the new cell CurrentCell
add 1 to VisitedCells else
pop the most recent cell entry off the CellStack
make it CurrentCell endIf
endWhile