From 2a831cf3cc7b70584d7c54d5f51c51dc692eb1c8 Mon Sep 17 00:00:00 2001 From: Sebastian Kacza Date: Tue, 12 Jan 2021 09:32:06 +0100 Subject: [PATCH] Update Pakete --- src/de/jaujau/audio/Spielerverwaltung.java | 194 +++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100755 src/de/jaujau/audio/Spielerverwaltung.java diff --git a/src/de/jaujau/audio/Spielerverwaltung.java b/src/de/jaujau/audio/Spielerverwaltung.java new file mode 100755 index 0000000..2e49f53 --- /dev/null +++ b/src/de/jaujau/audio/Spielerverwaltung.java @@ -0,0 +1,194 @@ +package de.jaujau.daten; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; + + +/** + * Verwaltung der Spieler und deren Highscore + * @author Alaa Aldin + * + */ +public class Spielerverwaltung { + + + private File datei; + private ArrayList spielerliste = new ArrayList(); + private String aktuellerSpielerName; + private int aktuellerSpielerNr; + private boolean debug; + + + /** + * + * @param Datei + */ + public Spielerverwaltung(String Datei) { + datei = new File(Datei); + spielerliste = new ArrayList(); + aktuellerSpielerName = ""; + aktuellerSpielerNr = -1; + debug = true; + } + + + /** + * Spieler Liste aus Datei einlesen + */ + public void lesenDatei() { + if(datei.exists() || datei.canRead()) { + BufferedReader reader; + try { + reader = new BufferedReader(new FileReader(datei)); + String line = reader.readLine(); + while (line != null) { + String [] newline = line.split(";"); + + //Nur einlesen wenn 2 Objekte vorhanden sind + if(newline.length == 2) { + String name = newline[0]; + int score = Integer.parseInt(newline[1]); + spielerliste.add(new Spielerdaten (name,score)); + } + line = reader.readLine(); + } + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(debug)System.out.println("SPIELERVERWALTUN: " + spielerliste.size() + " Enträge gelesen"); + } + + + + /** + * Spieler liste in datei schreiben + */ + public void schreibeDatei() { + if(spielerliste.size() > 0) { + //Spielerliste ist nicht leer + try { + BufferedWriter writer = new BufferedWriter(new FileWriter(datei)); //Erzeugen eines effizienten Writers für Textdateien + for (int i = 0; i < spielerliste.size(); i++) { + writer.write(spielerliste.get(i).getName() + ";" + Integer.toString(spielerliste.get(i).getPunktestand())); + writer.newLine(); + } + writer.close(); + } + catch(IOException ioe) { + System.err.println(ioe); + } + } + } + + + /** + * + * @param spielername + */ + public void setSpieler(String spielername) { + if(spielerVorhanden(spielername)) { + aktuellerSpielerName = spielername; + aktuellerSpielerNr = getSpielerNr(spielername); + if(debug)System.out.println("SPIELERVERWALTUN: Spieler " + spielername + " gesetzt"); + } + else { + spielerliste.add(new Spielerdaten(spielername,0)); + aktuellerSpielerNr = getSpielerNr(spielername); + if(debug)System.out.println("SPIELERVERWALTUN: Spieler " + spielername + " hinzugefügt"); + } + } + + + + /** + * + * @return + */ + public String getSpieler() { + return aktuellerSpielerName; + } + + + /** + * Highscore Liste als String Array ausgeben + * @return + */ + public String[][] getHighscoreTabelle() { + String [][] highscore = new String[spielerliste.size()][2]; + for(int i = 0; i < spielerliste.size(); i++) { + highscore[i][0] = spielerliste.get(i).getName(); + highscore[i][1] = Integer.toString(spielerliste.get(i).getPunktestand()); + } + + return highscore; + } + + + + /** + * Gibt das Level des Aktuellenspielers zurück + * @return + */ + public int getLevel() { + if(spielerliste.get(aktuellerSpielerNr).getPunktestand() > 0) { + return (int) Math.log(spielerliste.get(aktuellerSpielerNr).getPunktestand()); + } + else { + return 0; + } + } + + + + /** + * + * @param punkte + */ + public void erhoehePunkte(int punkte) { + int punkteNeu = spielerliste.get(aktuellerSpielerNr).getPunktestand() + punkte; + if(punkteNeu >= 0) { + spielerliste.get(aktuellerSpielerNr).setPunktestand(punkteNeu); + if(debug)System.out.println("SPIELERVERWALTUN: Punkte Neu: " + punkteNeu); + } + else { + if(debug)System.out.println("SPIELERVERWALTUN: Punkte Neu: 0"); + } + } + + + /** + * + * @param name + * @return + */ + private boolean spielerVorhanden(String name) { + for(int i = 0; i < spielerliste.size(); i++) { + if(spielerliste.get(i).getName().equals(name)) { + return true; + } + } + return false; + } + + + /** + * + * @param spielername + * @return + */ + private int getSpielerNr(String spielername) { + for(int i = 0; i < spielerliste.size(); i++) { + if(spielerliste.get(i).getName().equals(spielername)) { + return i; + } + } + return -1; + } +}