Wie kann ich am besten einen Level erhöhen im Java (if score = ...: level += 1)?

3 Antworten

Ich weiß nicht, ob ich die Frage richtig verstehe, aber kannst beim Erhöhen des Scores diesen durch 100 teilen und auf das Level speichern.

Es gibt viele verschiedene Möglichkeiten das gewünschte Ziel zu erreichen, aber je nach dem, was du genau machen willst, ist eine andere Möglichkeit eventuell sinnvoller. Ich weiß zum Beispiel nicht, ob die 100 immer genau getroffen wird oder ob es sein kann, dass bei 99 Punkten zum Beispiel 2 Punkte addiert werden.

static int score = 42069;
static int level = 420;

public static void main(String[] args) {

    increaseScoreBy(6969);

}

private static void increaseScoreBy(int increase) {
    score += increase;
    level = (score / 100); // So zum Beispiel; Wenn score kein Integer ist, kannst noch Math.floor(...) verwenden.
}
Woher ich das weiß:Hobby

brezelmitsalz 
Beitragsersteller
 15.05.2022, 10:43

was muss ich bei 42069 420 6969 hinschreiben? oder kann ich einfach andere zahlen benutzen (ich glaube mein programming partner wird es unlustig finden xD)

0
brezelmitsalz 
Beitragsersteller
 15.05.2022, 11:02
@Kalkablagerung

also so

static int score = 0;

static int level = 0;

public static void main(String[] args) {

increaseScoreBy();

}

private static void increaseScoreBy(int increase) {

score += increase;

level = (score / 100); // So zum Beispiel; Wenn score kein Integer ist, kannst noch Math.floor(...) verwenden.

}

0

If (score % 100 ==0)

dafür brauchst du den % Modulo Operator

und dann natürlich die score erhöhung: zb += 1 aber score Erhöhung natürlich vorher


TechPech1984  15.05.2022, 10:42

einfach schick und effizient die lösung

1
Destranix  15.05.2022, 10:45
@TechPech1984

Naja, nicht unbedingt. Wenn der Score um einen Wert ungleich 1 erhöht wird, kann es passieren, dass die Schwelle einfach übersprungen wird.

1
Destranix  15.05.2022, 10:47
@dersingle233

Steht ja nicht da. Deshalb habe ich es angemerkt, da es sonst schiefgehen kann und wird.

0
dersingle233  15.05.2022, 10:49
@Destranix

Stimmt, war verwirrt da du auch scoreerhöhung meintest, ist ja aber die punkterhöhung, welche nicht erwähnt wird

1
dersingle233  15.05.2022, 10:45

Ups, meinte nicht score erhöhung sindern punkterhöhung, welche zum score führt

0

Als Invariante:

level = points / 100;

TechPech1984  15.05.2022, 10:40

bitte noch ein integer daraus machen .

1
Destranix  15.05.2022, 10:42
@TechPech1984

Da gibt es mehrere Möglichkeiten, Je nach Typ der Variablen ist eine andere sinnvoll bzw. möglich. Dementsprechend lasse ich das mal so, wie es ist ersteinmal.

0
TechPech1984  15.05.2022, 10:47
@Destranix

naja, würde ich denn noch als fehler sehen , so lese ich bei 360 punkten halt level 3.6 , mathematisch gesehen halt . und damit falsch . du setzt vorwissen oder nachwissen vorraus . und das ist nie eine grundlage für eine lösung . sondern ein ansatz , der aber auch erstmal verstanden werden muss . komisch das du dich da so wehrst nur um recht zu behalten . typisch die gerneration "ich will das nciht einsehen das ich mich mal irre, ich werde dir jetzt 5000 gründe nennen warum ich im recht bin und das richtig ist) anstat es einfach zu korrigieren oder zu erwähnen . als wäre es in stein gemeißelt .

0
Destranix  15.05.2022, 10:51
@TechPech1984
so lese ich bei 360 punkten halt level 3.6 , mathematisch gesehen halt

Ne, ist ja Java, nicht Mathe.

Aber ja, ich verstehe, was du meinst. Ich hätte das auch noch auf andere Arten hinschreiben können (beispielsweise wirklich als Invariante mit doppeltem Gleichheitszeichen), doch ich dachte, ich halte es kurz und prägnant, so, dass man es einfach kopieren könnte und wenn es Rückfragen gibt, beantworte ich die.

komisch das du dich da so wehrst nur um recht zu behalten

Bitte keine Unterstellungen hier. Ich habe deshalb kein "int" eingebaut, da ich dann die Wahl hätte, "points" als float oder als int zu betrrachten, zu konvertieren, abzurunden, das Ergebnis ein float doer ein int sein könnte, eigentlich aber ja garkeine Deklaration sein sollte, etc.

Es gibt unzähliche Ausprägungen, deshalb habe ich deinen Vorschlag überprüft und nach Prüfung verworfen.

Komm mal runter!

1