我有一個while循環在我的C++程序中的第二個線程中獨立運行,但循環結束時不符合我設置的條件。C++雖然循環意外結束
我已經嘗試設置一個計數器來跟蹤循環運行的次數,它每次都是不同的,範圍從8到數百次。
有誰知道這可能是爲什麼發生?
while (ghostPosition.X != playerPosition.X && ghostPosition.Y != playerPosition.Y)
{
randomDirection = getRandomNumber(1, 5);
x = ghostPosition.X;
y = ghostPosition.Y;
if (randomDirection == 1)
{
if (ghostPosition.X > 1)
{
COORD oldPosition = { x, y };
COORD moveTo = { --x, y };
updateGraphics(oldPosition, moveTo, ghost);
ghostPosition.X = ghostPosition.X--;
}
}
else if (randomDirection == 2)
{
if (ghostPosition.Y < 84)
{
COORD oldPosition = { x, y };
COORD moveTo = { x, ++y };
updateGraphics(oldPosition, moveTo, ghost);
ghostPosition.Y = ghostPosition.Y++;
}
}
else if (randomDirection == 3)
{
if (ghostPosition.X < 24)
{
COORD oldPosition = { x, y };
COORD moveTo = { ++x, y };
updateGraphics(oldPosition, moveTo, ghost);
ghostPosition.X = ghostPosition.X++;
}
}
else if (randomDirection == 4)
{
if (ghostPosition.Y > 1)
{
COORD oldPosition = { x, y };
COORD moveTo = { x, --y };
updateGraphics(oldPosition, moveTo, ghost);
ghostPosition.Y = ghostPosition.Y--;
}
}
}
函數調用內循環:
int Maze::getRandomNumber(int minimum, int maximum)
{
int output;
std::random_device randomDevice;
std::mt19937 mersenneTwister(randomDevice());
std::uniform_real_distribution<double> distribution(minimum, maximum);
return distribution(mersenneTwister);
}
稱爲(updateGraphics)唯一的其他功能簡單的修改基於傳遞的參數控制檯輸出。 (我不認爲這個功能是問題)
使用調試器。 –
你怎麼知道條件不符合? 「我不認爲這個功能是問題......」有名的遺言。 – Matt
因爲我已經遍歷代碼並且ghostPosition永遠不會匹配playerPosition,但while循環仍然會結束。 – Darkstorm51