for(int g = 0; g <= width; g++)
{
std::cout << width << "\n";
std::cout << g << "\n";
for(int h = 0; h <= height; h++)
{
int rx = g;
int ry = h;
if(h == 0 || img.GetPixel(rx, ry - 1) == sf::Color::Black)
{
cells[g/2][h/2].up = true;
}
if(g == 0 || img.GetPixel(rx - 1, ry) == sf::Color::Black)
{
cells[g/2][h/2].left = true;
}
}
}
所以我这里去了这段代码。宽度设置为197,并且它工作得很好,填满整个阵列。然而,当g点击196宽度只是随机更改为453.我不知道发生了什么,任何人都可以帮助我吗?变量正在内部更换for循环无故
该程序的目的是循环访问数组,并根据需要将单元格分配给单元格(这是一个迷宫)。
我已确认宽度正在变化,而不是别的。我看不出为什么会有所改变,但是,没有其他线程在运行,img来自SFML,所以什么也不应该发生。
周围相关代码的pastebin:http://pastebin.com/Q7jyZYrR 需要SFML,如果注释掉使用它的部件,崩溃不会发生。
所以你说'img.GetWidth()'每次在循环周围都会返回197,直到它突然变为453为止。我们很难告诉你为什么会发生'img.GetWidth()'中的内容。查看'img.GetWidth()'的实现来找出答案。 – 2012-01-07 21:56:59
从我所看到的情况来看,如果某个其他线程正在对'img'对象进行某种操作,那么'宽度'可以改变的唯一方法............ – 2012-01-07 21:57:00
为什么在每次迭代中分配宽度循环?在循环之上查询宽度是不够的? – Thilo 2012-01-07 21:57:33