java if abfrage einmal ausführen?

4 Antworten

Um deine Frage zu beantworten, muss man erst einmal wissen, was der User überhaupt tun kann.

Was passiert, wenn der User 0 oder weniger Leben hat?
-> Normalerweise endet der derzeitige Prozess, oder der Prozess führt sich fort, indem der User wieder 100% "health" (Leben) hat und damit würde die Abbruchbedingung nur 1 mal stattfinden.

Was passiert, wenn der User kein Geld mehr hat?
-> Der Prozess endet, oder ihm wird kein Geld mehr abgezogen.

if( user.player.health <= 0 )
{
  // user verliert 50 money
  user.player.money -= 50;
  // user respawnt
  user.player.health = 100;

  // Geld ist im Minusbereich
  if(user.player.money < 0)
     user.player.money = 0;
}

Weitere else Anweisungen finde ich unnötig, da erstens jede weitere Anweisung auf die Performance geht und zweitens man geht immer davon aus, dass der User über 0 Leben hat.

Hallo also ich hoffe mal, ich habe deine Frage richtig verstanden. 

//Wenn user.player.health kleiner 0 ist 1 abziehen

if(user.player.health <= 0){
user.player.health--;

//Wenn user.player.health größer 0 ist
}else if(user.player.health >= 0){
//Do anything

//Wenn user.player.health gleich 0 ist 50 abziehen
}else if(user.player.health == 0){
user.player.health -= 50;
}

Ich hoffe ich konnte deine Frage richtig beantworten

In deinem Codebeispiel werden beide Abfragen ausgeführt, ich hoffe, das ist dir bewusst (für den Fall user.player.health = 0).

Implementier das doch so, wie du es beschrieben hast. Sollte die Abfrage = 0 ergeben, dann ist user.player.money = user.player.money - 50. Du solltest deine Abfragen aber noch entsprechend überarbeiten, da das sonst mehrfach zutreffen kann.

Unkreatiiiev  13.02.2016, 16:28

Es wir der Inhalt von nur einer Abfrage ausgeführt.

0
Gehilfling  13.02.2016, 18:17
@Unkreatiiiev

Stimmt. Allerdings kann man sich das "=0" bei der zweiten Abfrage dann sparen.

0

if (user.player.health <=0) {

  user.player.money = user.player.money - 50;

}

So müsste es meine ich gehen..

der122345 
Fragesteller
 13.02.2016, 11:57

jetzt werden sekündlich 50 abgezogen ich möchte aber das nur einmalig 50 abgezogen werden

0