-2
工作後,我不得不使用FMOD的功能,而不是%的這段代碼:%不蘭特()C++
int prob = rand();// % 4;
prob = fmod(prob,4);
if (prob == 0) {
shoot = true;
}
else shoot = false;
如果我使用%,概率變量不會得到任何debuger價值。
第二個問題是它從來沒有進入內部如果我把斷點放在if上,另一個放在另一個上,另一個放在shoot = true上;該debuger說: :斷點目前不會被擊中。沒有調試器的目標代碼類型的可執行代碼關聯。
在其他計算機上,第二個問題不存在。
全功能:
void cVoladorEstatico::Logic(int *map)
{
double t1 = glutGet(GLUT_ELAPSED_TIME);
if (t1 - moveDelaySteering > 20 * 20) {
random_variable = rand();
moveDelaySteering = t1;
}
if (t1 - moveDelay > 20) {
int aux = y;
y += random_variable%speed - 3;
//Whats next tile?
if ((y % TILE_SIZE) <= 1)
{
/*y += speedY;
x += speedX;*/
//si choca con tile, se autodestruye muy fuerte
if (CollidesMapWall(map, false)) y = aux; //delete this;
}
//Advance, no problem
else
{
/*y += speedY;
x += speedX;*/
//TODO: si choca, hace magia
}
moveDelay = t1;
}
//should i shoot
//if (t1 - lastShootDec > shootChance) {
int prob = rand();// % 4;
prob = fmod(prob,4);
if (prob == 0) {
shoot = true;
}
else shoot = false;
//}
}
你重新編譯了你的代碼嗎? –
爲什麼要在'int'上使用'fmod'? – Logicrat
你應該使用'(value&3)'而不是''''或'fmod'。一些編譯器可能比'%4'更高效地編寫'&3',具體取決於優化級別。 –