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