Wie kann ich am besten einen Level erhöhen im Java (if score = ...: level += 1)?
sagen wir mal so, nach jedem 100 punkte wird es um einen level erhöht
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.
}
Naja, standardmäßig hat man bei einem Spiel ja 0 Punkte und ist im Level 0 würde ich sagen
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.
}
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
Naja, nicht unbedingt. Wenn der Score um einen Wert ungleich 1 erhöht wird, kann es passieren, dass die Schwelle einfach übersprungen wird.
Steht ja nicht da. Deshalb habe ich es angemerkt, da es sonst schiefgehen kann und wird.
Stimmt, war verwirrt da du auch scoreerhöhung meintest, ist ja aber die punkterhöhung, welche nicht erwähnt wird
Ups, meinte nicht score erhöhung sindern punkterhöhung, welche zum score führt
Als Invariante:
level = points / 100;
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.
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 .
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!
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)