我还在学习SFML和C ++,所以请理解我还处于基础水平。
这是我第一次使用这个网站IDK,如果我这样做的话。
我想创建一个函数set
,它允许我传递一个二维数组作为参数,并在数组中有一个1时放置一个tile。所以我可以使用矩阵绘制地图和东西。 ww是窗口宽度,wh是窗口高度。在main
中,我创建了一个for循环,它将遍历tile并将它们绘制到窗口中。但是当我运行它时它会给我错误:Segmentation Fault(core dumped)"错误:139"。有没有更好的方法来做到这一点,我做错了什么?
谢谢。
struct field
{
int rectsizex;
int rectsizey;
RectangleShape * tiles;
field (int s)
{
rectsizex = ww / s;
rectsizey = wh / s;
tiles = new RectangleShape[rectsizex * rectsizey];
}
~field()
{
delete tiles;
}
RectangleShape * set(int ** matr)
{
Vector2f size((ww / rectsizex), (wh / rectsizey));
int posx = ww / rectsizex;
int posy = wh / rectsizey;
for(int x = 0; x<rectsizex; x++)
{
for(int y = 0; y<rectsizey; y++)
{
int i = ((x*rectsizey)+1)+y;
tiles[i].setSize(size);
if(matr[x][y] == 1)
{
tiles[i].setFillColor(Color::Black);
}
else
{
tiles[i].setFillColor(Color::White);
}
tiles[i].setPosition(x * posx, y * posy);
}
}
return tiles;
}
};
答案 0 :(得分:0)
找出你为i获得的价值:
int i = ((x*rectsizey)+1)+y;
这个值肯定在你的数组范围之外,因此错误。使用调试器,或在获得i值后输入一些print语句。