Update Pakete

This commit is contained in:
Sebastian Kacza
2021-01-12 09:32:06 +01:00
parent bd440e8150
commit 2a831cf3cc

View File

@@ -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 <Spielerdaten> spielerliste = new ArrayList<Spielerdaten>();
private String aktuellerSpielerName;
private int aktuellerSpielerNr;
private boolean debug;
/**
*
* @param Datei
*/
public Spielerverwaltung(String Datei) {
datei = new File(Datei);
spielerliste = new ArrayList<Spielerdaten>();
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;
}
}