2010-04-10 2 views
1

J'ai rencontré un petit obstacle et je voulais voir si quelqu'un pouvait m'aider!Jeu iPhone Avoir une déclaration vérifiée tous les 50 points

Je veux écrire un algorithme pour une instruction if qui dit:

if (for every 50 points) 
{ 
//do something 
} 

Je pensais que + = 50 ferait l'affaire, mais Nope.

Des idées?

Merci!

+0

Que voulez-vous dire? Un for-loop à l'intérieur d'un if? – kennytm

+2

Je pense que vous devez être plus clair à ce sujet. En supposant que ce sont des points marqués dans un jeu: Et si le joueur recevait 60 points à la fois? 150? 20? – Thomas

+0

Ce que je veux dire est: Est-ce instruction if at- 50 points, 100 points, 150 points, etc. – user298261

Répondre

3
if ((points % 50) == 0) 
{ 
    // do something 
} 

Où les points sont une variable int contenant vos points. L'instruction if sera pour les points 0 inscrit à cet effet, 50, 100, 150 .. et ainsi de suite

+2

Cela ne fonctionnera pas si vous avez par exemple des points + = 13 dans la "boucle" – Rippo

1
if (points - lastCheckpoint >= 50) 
{ 
    // do something 
    lastCheckpoint = points - (points % 50); 
} 

Commencez par un int lastCheckpoint = 0; lors de mise en place, et cela fera l'affaire. Avertissement: Si les points augmentent de 100 ou plus entre les vérifications, le // do something ne sera déclenché qu'une seule fois.
Si vous voulez que cela se produise pour tous les 50 points indépendamment, vous pouvez changer l'instruction d'incrément pour être lastCheckpoint += 50; bien que cela risque le points courir loin devant lastCheckpoint.

Edit: ce sera plus efficace:

if (points > nextCheckpoint) 
{ 
    // do something 
    nextCheckpoint = 50 + points - (points % 50); 
} 

Commencez par int nextCheckpoint = 50; De cette façon, le test qui est effectué (probablement) chaque itération de la boucle de jeu ne comprend pas une soustraction.

+0

Ouais. Ce que je veux dire, c'est: Faire quelque chose à: 50, 100, 150, etc. – user298261

+0

J'ai encore un problème: si le joueur a 0 point, il avance toujours, ce que je ne veux pas faire . Comment puis-je résoudre ce problème? – user298261

+0

Avez-vous mis le 'nextCheckpoint' à 50 ou 0? – tzaman

Questions connexes