2017-03-14 3 views
0

J'utilise Java pour faire tourner des balles autour d'une boîte. En utilisant ce morceau de code, il rebondit sur les bords.Comment utiliser une instruction if pour s'exécuter, sauf si quelque chose d'autre s'est produit?

if (y >= borderBottom) 
{ 
    y = border; 
    speedOfY = -speedofY; 
} 

J'ai un trou dans la boîte de billes. Si la balle frappe le trou, je voudrais qu'il continue à travers l'écart.

Je veux l'instruction if à courir jusqu'à ce que:

  • il est entre deux points x (le trou)

  • et au fond de la frontière sur l'axe y (le côté du trou).

Comment puis-je y remédier? Je sais que je dois utiliser simulation.pauseSimulation() mais je ne sais pas comment faire pour que les balles s'arrêtent précisément quand c'est entre les deux points et quand c'est au bas de la bordure, merci!

J'ai essayé d'utiliser la déclaration précédente avec cette suite,

if(y >= borderBottom && (x < 275) && (x > 325>)) 
 
    simulation.pauseSimulation() 
 

mais j'ai joué autour et la simulation a ignoré la bordure inférieure entier et à un moment donné tous les objets flashé .

+0

Gardez une trace de la position de la balle précédente et si vous détectez la balle vient frapper le fond, vérifiez si la ligne droite entre les deux positions de balle traverse le segment de frontière? – bipll

+0

Pouvez-vous nous montrer ce que vous avez essayé? – marisbest2

+0

@bipll Je l'ai utilisé si (y> = borderBottom && (x <275) && (x> 325>)) simulation.pauseSimulation() mais la question est que j'ai besoin de cette déclaration pour remplacer l'autre déclaration si toutes les conditions sont remplies Est-ce possible? – somebodyhelpme

Répondre

2

Il peut être intéressant de connaître les opérateurs logiques (& &, &, ||, |,!, ^). Plus précisément dans ce cas:

if (Condition A && Condition B) 
{ 
    //Do something 
} 

Vous pouvez également utiliser:

if(Condition A || Condition B) 
{ 
    //Do something 
} 
+4

Probablement OU aussi. –

0

Tout d'abord, vous devez connaître le fond et les coordonnées haut du trou. Ensuite, vous pouvez simplement écrire:

if (y >= borderBottom || (y < holeBottom && y > holeTop)) { 
    Simulation.pauseSimulation(); 
    //You can pause simulation or do anything you prefer 
} 
+0

Cela n'a pas fonctionné non plus, merci quand même! – somebodyhelpme