java if abfrage einmal ausführen?

...komplette Frage anzeigen

6 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.

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
der122345 13.02.2016, 11:55

jetzt wird der wert money wenn der Wet health 0 erreicht hat auf 50 gesetzt ich möchte aber das von dem wert money wenn der wert Health 0 erreicht hat das einmalig 50 abgezogen werden 

0
PWolff 13.02.2016, 11:58
@der122345

Bitte genau lesen und/oder kopieren!

nicht

money = 50

sondern

money -= 50

(dies ist eine abgekürzte Schreibweise für

money = money - 50

)

0
der122345 13.02.2016, 12:04
@PWolff

ja jetzt wird der wert immer wider um 50 verringert ich möchte das der wert money sich aber nur einmal um 50 verringert

0
PWolff 13.02.2016, 12:20
@der122345

Vermutlich solltest du erst einmal Standardaufgaben bearbeiten, bis du die Sprache in ihren Grundzügen verstanden hast.

0
PWolff 13.02.2016, 12:26
@der122345

Dann sollte dir if(){}, -=, boolesche Felder (Instanzvariablen) etc. aber mehr als geläufig sein.

if (...) {
if (!moneyDecrementedForHealthReasons) {
user.player.money-=50;
moneyDecrementedForHealthReasons=true;
};
...
0
PWolff 13.02.2016, 15:31
@der122345

Wenn dir nicht einmal geläufig ist, was eine Variablendeklaration (und was ein Feld / eine Instanzvariable einer Klasse) ist und wozu das gut sein könnte, solltest du die Spieleentwicklung noch etwas zurückstellen bzw. ein Tutorial nehmen, bei dem dieses ganze Zeugs schon bratfertig mitgeliefert wird.

0

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

money --
Bedeutet dass du den Wert um 1 verringerst.

Du kannst stattdessen schreiben

money = money-50;

Schreiben

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

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

}

So müsste es meine ich gehen..

der122345 13.02.2016, 11:57

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

0

Was möchtest Du wissen?