Solved 3.2.1

This commit is contained in:
stiv2804 2019-02-14 14:01:42 +01:00
parent 4cc86d3c23
commit f202129510

View file

@ -1,95 +1,99 @@
package game; package game;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Date; import java.util.Date;
/** /**
* Diese Klasse stellt einen Eintrag in der Bestenliste dar. * Diese Klasse stellt einen Eintrag in der Bestenliste dar.
* Sie enthält den Namen des Spielers, das Datum, die erreichte Punktzahl sowie den Spieltypen. * Sie enthält den Namen des Spielers, das Datum, die erreichte Punktzahl sowie den Spieltypen.
*/ */
public class ScoreEntry implements Comparable<ScoreEntry> { public class ScoreEntry implements Comparable<ScoreEntry> {
private String name; private String name;
private Date date; private Date date;
private int score; private int score;
private String gameType; private String gameType;
/** /**
* Erzeugt ein neues ScoreEntry-Objekt * Erzeugt ein neues ScoreEntry-Objekt
* @param name der Name des Spielers * @param name der Name des Spielers
* @param score die erreichte Punktzahl * @param score die erreichte Punktzahl
* @param date das Datum * @param date das Datum
* @param gameGoal der Spieltyp * @param gameGoal der Spieltyp
*/ */
private ScoreEntry(String name, int score, Date date, String gameGoal) { private ScoreEntry(String name, int score, Date date, String gameGoal) {
this.name = name; this.name = name;
this.score = score; this.score = score;
this.date = date; this.date = date;
this.gameType = gameGoal; this.gameType = gameGoal;
} }
/** /**
* Erzeugt ein neues ScoreEntry-Objekt * Erzeugt ein neues ScoreEntry-Objekt
* @param player der Spieler * @param player der Spieler
* @param gameGoal der Spieltyp * @param gameGoal der Spieltyp
*/ */
public ScoreEntry(Player player, Goal gameGoal) { public ScoreEntry(Player player, Goal gameGoal) {
this.name = player.getName(); this.name = player.getName();
this.score = player.getPoints(); this.score = player.getPoints();
this.date = new Date(); this.date = new Date();
this.gameType = gameGoal.getName(); this.gameType = gameGoal.getName();
} }
@Override @Override
public int compareTo(ScoreEntry scoreEntry) { public int compareTo(ScoreEntry scoreEntry) {
return Integer.compare(this.score, scoreEntry.score); return Integer.compare(this.score, scoreEntry.score);
} }
/** /**
* Schreibt den Eintrag als neue Zeile mit dem gegebenen {@link PrintWriter} * Schreibt den Eintrag als neue Zeile mit dem gegebenen {@link PrintWriter}
* Der Eintrag sollte im richtigen Format gespeichert werden. * Der Eintrag sollte im richtigen Format gespeichert werden.
* @see #read(String) * @see #read(String)
* @see Date#getTime() * @see Date#getTime()
* @param printWriter der PrintWriter, mit dem der Eintrag geschrieben wird * @param printWriter der PrintWriter, mit dem der Eintrag geschrieben wird
*/ */
public void write(PrintWriter printWriter) { public void write(PrintWriter printWriter) {
// TODO: ScoreEntry#write(PrintWriter) // TODO: ScoreEntry#write(PrintWriter)
} printWriter.println(this.name + ";" + this.date + ";" + this.score + ";" + this.gameType);
}
/**
* List eine gegebene Zeile ein und wandelt dies in ein ScoreEntry-Objekt um. /**
* Ist das Format der Zeile ungültig oder enthält es ungültige Daten, wird null zurückgegeben. * List eine gegebene Zeile ein und wandelt dies in ein ScoreEntry-Objekt um.
* Eine gültige Zeile enthält in der Reihenfolge durch Semikolon getrennt: * Ist das Format der Zeile ungültig oder enthält es ungültige Daten, wird null zurückgegeben.
* den Namen, das Datum als Unix-Timestamp (in Millisekunden), die erreichte Punktzahl, den Spieltypen * Eine gültige Zeile enthält in der Reihenfolge durch Semikolon getrennt:
* Gültig wäre beispielsweise: "Florian;1546947397000;100;Eroberung" * den Namen, das Datum als Unix-Timestamp (in Millisekunden), die erreichte Punktzahl, den Spieltypen
* * Gültig wäre beispielsweise: "Florian;1546947397000;100;Eroberung"
* *
* @see String#split(String) *
* @see Long#parseLong(String) * @see String#split(String)
* @see Integer#parseInt(String) * @see Long#parseLong(String)
* @see Date#Date(long) * @see Integer#parseInt(String)
* * @see Date#Date(long)
* @param line Die zu lesende Zeile *
* @return Ein ScoreEntry-Objekt oder null * @param line Die zu lesende Zeile
*/ * @return Ein ScoreEntry-Objekt oder null
public static ScoreEntry read(String line) { */
// TODO: ScoreEntry#read(String) public static ScoreEntry read(String line) {
return null; String[] parts = line.split(";");
} if(parts.length != 4)
return null;
public Date getDate() { ScoreEntry res = new ScoreEntry(parts[0], Integer.parseInt(parts[1]), new Date(Long.parseLong(parts[2])), parts[3]);
return date; return res;
} }
public String getName() { public Date getDate() {
return this.name; return date;
} }
public int getScore() { public String getName() {
return this.score; return this.name;
} }
public String getMode() { public int getScore() {
return this.gameType; return this.score;
} }
}
public String getMode() {
return this.gameType;
}
}