I fmod Funktion anstelle von% auf diesen Code verwenden:% funktioniert nicht nach rand() C++
int prob = rand();// % 4;
prob = fmod(prob,4);
if (prob == 0) {
shoot = true;
}
else shoot = false;
wenn ich% verwenden, variable prob es keinen Wert auf debuger bekommen.
Zweites Problem ist, dass es nie drinnen kommt, wenn ich Haltepunkt auf, wenn ein anderer auf else, und andere auf Shoot = wahr; Der debuger sagt: Der Breakpoint wird derzeit nicht getroffen. Kein ausführbarer Code des Zielcodetyps des Debuggers ist zugeordnet.
Auf anderen Computer existiert das zweite Problem nicht.
Volle Funktion:
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;
//}
}
Haben Sie Ihren Code neu kompiliert? –
Warum würden Sie 'fmod' auf einem' int' verwenden? – Logicrat
Sie sollten '(Wert & 3)' anstelle von '%' oder 'fmod' verwenden. Einige Compiler codieren '& 3' effizienter als'% 4', abhängig von den Optimierungspegeln. –