Frage von Dreamer3110, 108

In Java einen Highscore programmieren?

Hey, in der Schule haben wir momentan ein Projekt, bei dem wir ein "Rechenprogramm" für Grundschüler programmieren müssen. Das, was meine Gruppe bis jetzt geschafft hat ist, dass einem, nach dem man das Programm gestartet hat, 10 einfache Additionsaufgaben im Zahlenraum bis 20 angezeigt werden, die man dann nacheinander lösen kann und einem nach jeder gelösten Aufgabe angezeigt wird, ob das Ergebnis richtig ist oder nicht. Dabei wird die Zeit, die man zum Lösen der Aufgaben benötigt, gemessen (wenn man ein Ergebniss falsch hat werden einem 10 Sekunden auf die Endzeit aufgerechnet). Hat man alle Aufgaben bearbeitet wird einem Angezeigt, wie viel Zeit man benötigt hat und wie viele Aufgaben man richtig bzw. falsch beantwortet hat. Nun sollen wir das Programm so erweitern, dass man einen Highscore aufstellen kann. Das heißt das wenn man den bisher besten Wert (also von der Zeit die man benötigt hat) hat, man seinen Namen eingeben muss und der Name, sowie der Wert zwischengespeichert werden, solange das Programm läuft. Wird danach ein neuer Highscore aufgestellt soll dieser natürlich durch den alten ersetzt werden; schafft man es nicht die Bestzeit zu unterbieten soll einem der Highscore mit dem Namen des Benutzers, der diesen aufgestellt hat und die eigenen Zeit die man benötigt hat. In diesem Punkt kommen wir absolut nicht weiter, da wir so etwas noch nie gemacht haben. Man findet natürlich sehr viel zu diesem Thema auch auf anderen Internetseiten, aber alles, was wir gefunden haben hat entweder nicht wirklich zu dem gepasst, was wir gesucht haben oder es war einfach nur ein komplizierter Quellcode, der noch dazu überhaupt nicht erklärt war. Hoffe ihr könnt mir da helfen und mir das auch ein bisschen erklären. Aber im Voraus schon mal danke euch allen :) LG Dreamer

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Robinson97, 67

Wenn ich das richtig verstanden habe, wollt ihr einmal die Bestzeit haben und wenn diese geschlagen wird, das diese ersetzt wird.

Das könnt ihr doch einfach so machen, indem ihr eine Variable highscore anlegt. Nach dem Ende jedes durchlaufes wird durch eine if-Abfrage geprüft, ob die neue Zeit höher ist als die Bestzeit oder nicht.

Wenn ja: überschreibe sie einfach mit der neuen Zeit (mach das selbe mit dem Namen)

Wenn neine: gebe den Highscore aus mit dem Namen.

[CODE]

int highscore = 0;                                                                           String highscore_name;                                                                int geschaffte_Zeit;                                                                             String name;

//Code

if(geschaffte_Zeit >highscore)

{

highscore = geschaffte_Zeit ;

highscore_name = name;

}else{

System.out.println("Der Highscore von "+highscore_name+" mit der Punktzahl "+highscore+" wurde nicht geschlagen");

}

[/CODE]


Kommentar von Dreamer3110 ,

Danke :) Das klingt für mich eigentlich logisch. Wenn`s jetzt noch funktioniert dann ist das super. Danke noch mal du hast mir echt weitergeholfen :)

Antwort
von TheErdnuss, 62

Ich habe damals in der Schule zu manchen Spielen auch einen High-Score programmieren müssen.

Habe das ganze über eine externe Textdatei gelöst.

Bedeutet also, nachdem ihr erkannt habt, ob der High-Score überboten wurde, speichert ihr die Zahl in einem Textdokument.

PrintWriter pw = new PrintWriter("path.txt", "UTF-8");
pw.println(highscore);
pw.close();

Die Datei könnt ihr dann auch auslesen um den aktuellen High-Score anzeigen zu lassen.

MfG, TheErdnuss

Kommentar von Dreamer3110 ,

Ja das ist genau das, was auf den anderen Seiten auch stand aber ich muss ganz ehrlich sagen, dass ich da nicht wirklich durch blicke.. :/

Kommentar von TheErdnuss ,

Was genau verstehst du denn nicht?

Den PrintWriter gibt es in Java, vielleicht musst du ihn importieren, aber das sollte ja machbar sein.

Wie du ein Objekt erzeugst, sollte dir doch auch klar sein also macht die erste Zeile doch eigentlich Sinn für dich, oder nicht?

Die zweite Zeile schreibt den Wert, den du in Klammern einträgst, in die Datei, die du bei der Erzeugung mitgibst.

Und die letzte Zeile schließt einfach nur den PrintWriter, aus Performancegründen.

Kommentar von Dreamer3110 ,

hmm okay danke ich gucks mir nochmal an :)

Kommentar von TheErdnuss ,

Sag bescheid, falls ich dir helfen kann.
Musst nur sagen wo genau das Problem liegt ;)

Antwort
von EightSix, 51

Verstehe das Problem nicht wenn ihr den Rest auch geschafft habt. Ihr speichert den Bestwert in einer Variable. Beim nächsten Durchlauf vergleicht man die Werte und fragt ggf. nach dem Namen und speichert den auch.

Kommentar von TheErdnuss ,

Wenn du das so machst, ist der High-Score allerdings nur solange da, wie das Programm läuft. Sobald du es neu startest, ist er wieder zurückgesetzt.

Kommentar von EightSix ,

In der Frage wurde erwähnt dass es nur während das Programm läuft gespeichert werden soll.

Kommentar von Dreamer3110 ,

Das war mir schon klar aber ich hab ja nach einem möglichst einfachen Weg gesucht das umzusetzten..

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten