-2
た後、私はこのコードに代わり%のFMOD機能を使用する必要があります。%は動作しませんランド()C++
int prob = rand();// % 4;
prob = fmod(prob,4);
if (prob == 0) {
shoot = true;
}
else shoot = false;
私は%、PROB変数を使用する場合、それはデバッガでは任意の値を取得しません。
2番目の問題は、if、else、else、およびshoot = trueにブレークポイントを置くと決して内側に来ないということです。 デバッガは言う:ブレークポイントは現在ヒットしません。デバッガのターゲットコードタイプの実行可能コードは関連付けられていません。
他のコンピュータでは、2番目の問題は存在しません。
のフル機能:
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;
//}
}
コードを再コンパイルしましたか? –
なぜ 'fmod'を' int'に使うのですか? – Logicrat
'%'や 'fmod'を使わずに'(value&3) 'を使うべきです。いくつかのコンパイラは、最適化レベルに応じて、 '%4'よりも効率的に'&3'をコード化することができます。 –