Frage von der122345, 65

java if abfrage einmal ausführen?

Java Code

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

user.player.money--;

}else if(user.player.health >= 0){

}

ich mochte das wenn der Wert user.player.health 0 erreicht hat einmalig 50 von dem wert money Abgezogen werden

vielen dank der122345

Antwort
von RedKungFuMastr, 13

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.

Antwort
von Gehilfling, 29

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.

Kommentar von Unkreatiiiev ,

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

Kommentar von Gehilfling ,

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

Antwort
von PWolff, 30

wie https://www.gutefrage.net/frage/einmaliges-ausfuehren-einer-if-abfrage?foundIn=m... nur statt

money--
money-=50
Kommentar von der122345 ,

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 

Kommentar von PWolff ,

Bitte genau lesen und/oder kopieren!

nicht

money = 50

sondern

money -= 50

(dies ist eine abgekürzte Schreibweise für

money = money - 50

)

Kommentar von der122345 ,

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

Kommentar von PWolff ,

wie https://www.gutefrage.net/frage/einmaliges-ausfuehren-einer-if-abfrage?foundIn=l... , nur statt

...

Also nicht nur die Zeile aus dieser Antwort übernehmen, sondern auch das Zeug aus der genannten anderen Antwort, insbesondere die Zeilen

  if (!moneyDecrementedForHealthReasons) {

 und

    moneyDecrementedForHealthReasons=true;
Kommentar von der122345 ,

???

Kommentar von PWolff ,

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

Kommentar von der122345 ,

ich arbeite normalerweise mit c++ 

Kommentar von PWolff ,

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

if (...) {
if (!moneyDecrementedForHealthReasons) {
user.player.money-=50;
moneyDecrementedForHealthReasons=true;
};
...
Kommentar von PWolff ,

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.

Antwort
von MaXXi1502, 21

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

Antwort
von jonashima, 18

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

Du kannst stattdessen schreiben

money = money-50;

Schreiben

Antwort
von BlackBanan24, 21

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

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

}

So müsste es meine ich gehen..

Kommentar von der122345 ,

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

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten