diff --git a/highscore.txt b/highscore.txt deleted file mode 100644 index 29e0127..0000000 --- a/highscore.txt +++ /dev/null @@ -1,15 +0,0 @@ -Seb;245 -Elmo;240 -Moritz;220 -Alaa-Aldin;217 -Fabian;215 -Thomas;1233 -Emil;-21331 -Heinz;312 -Gert;234 -Kasper;24 -Jens;234 -Paul;234 -Till;553 -Reiner;462 -Achim;2344 \ No newline at end of file diff --git a/src/de/jaujau/UnitTests/TEST_Spielerverwaltung.java b/src/de/jaujau/UnitTests/TEST_Spielerverwaltung.java new file mode 100755 index 0000000..12dae26 --- /dev/null +++ b/src/de/jaujau/UnitTests/TEST_Spielerverwaltung.java @@ -0,0 +1,29 @@ +package de.jaujau.UnitTests; + +//import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import de.jaujau.daten.Spielerverwaltung; + +class TEST_Spielerverwaltung { + + private Spielerverwaltung verwaltung; + + @BeforeEach + void setUp() throws Exception { + verwaltung = new Spielerverwaltung("highscore.csv"); + } + + @Test + void test() { + verwaltung.lesenDatei(); + verwaltung.setSpieler("Weihnachtsmann"); + System.out.println("Spieler " + verwaltung.getSpieler()); + System.out.println("Level " + verwaltung.getLevel()); + verwaltung.erhoehePunkte(1); + verwaltung.schreibeDatei(); + } + +} diff --git a/src/de/jaujau/daten/Spielerdaten.java b/src/de/jaujau/daten/Spielerdaten.java index 003355d..71b8d0d 100644 --- a/src/de/jaujau/daten/Spielerdaten.java +++ b/src/de/jaujau/daten/Spielerdaten.java @@ -6,46 +6,30 @@ */ package de.jaujau.daten; -//import de.jaujau.spiellogik.Spiel; /** - * Class Spieler + * Klasse Spielerdaten */ - public class Spielerdaten { - private int punktestand; // Punktestand des Spielers - private String name /* = Spieler.getSpieler() */; // Name des Spielers + private int punktestand; + private String name; - public Spielerdaten (String name, int punkte) { //Arraylist - this.name = name; + public Spielerdaten (String name, int punkte) { + this.name = name; this.punktestand = punkte; } - /** - * Get the value of punktestand - * - * @return the value of punktestand - */ - public int getPunktestand() { //Zurückgeben der gesammelten Punkte + public int getPunktestand() { return punktestand; } - public void setPunktestand(int punkte) { //Einsetzen des Punktestands + public void setPunktestand(int punkte) { punktestand = punkte; - } - /** - * Get the value of name - * - * @return the value of name - */ + } + public String getName() { return name; - } - - public void setName(String Name) { //Einsetzen des Namen des Spielers - name = Name; - } - + } } diff --git a/src/de/jaujau/daten/Spielerverwaltung.java b/src/de/jaujau/daten/Spielerverwaltung.java old mode 100644 new mode 100755 index 4aa4bf6..33744c0 --- a/src/de/jaujau/daten/Spielerverwaltung.java +++ b/src/de/jaujau/daten/Spielerverwaltung.java @@ -1,195 +1,188 @@ -/** - - * @author Alaa Aldin - - * @version 1.0 - - */ 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; public class Spielerverwaltung { - private int local; - private int level; - private Spielerdaten spieler; - private Spielerdaten aktuellerSpieler; - private ArrayList daten = new ArrayList(); - private String [][] transdaten; - public void addSpieler(String name) { //Neue Spieler hinzuf�gen - //leseDaten(); - daten.add(new Spielerdaten(name, 0)); - } - - public void setaktuellerSpieler(String name) { - aktuellerSpieler = sucheSpieler(name); - } - - public Spielerdaten sucheSpieler(String name) { - for (int i = 0; i < daten.size(); i++) { - if (daten.get(i).getName().equals(name)) { - System.out.println("SPIELERVERWALTUNG: Spieler gefunden"); - return daten.get(i); - } - } - addSpieler(name); - System.out.println("SPIELERVERWALTUNG: Neuer Spieler erstellt"); - return daten.get(daten.size()-1); - - } - - public Spielerdaten getaktuellerSpieler() { - return aktuellerSpieler; - } - /** - * Set the value of level - * - * @param newlevel the new value of level - */ - - public void setLevel(int newlevel) { - level = newlevel; - } - /** - * Get the value of level - * - * @return the value of level - */ - - public int getLevel() { - return level; - } - - public String [][] toArray (ArrayList a){ //Arraylist in Array umwandeln - String [][]neuerArray = new String [a.size()][2]; - System.out.println("TOARRAY: " + daten.size()); - for (int j = 0 ; j< a.size(); j++) { - neuerArray[j][0] = a.get(j).getName(); - neuerArray[j][1] = Integer.toString(a.get(j).getPunktestand()); - } - return neuerArray; - } - - /** - * Set the value of spieler arraylist von Spieler - * - * @param newSpieler the new value of spieler - */ - - public void setSpieler(String a) { //setze einen Spieler ein. - leseDaten(); - transdaten = toArray(getDaten()); - System.out.println(transdaten.length); - for (int i = 0; i < transdaten.length; i++) { - if (transdaten[i][0].matches(a)) { - setPlace(i); - } - } - } - public void editName (String alt, String neu) { //Editieren des Namen des Spielers - setSpieler(alt); - int place = getPlace(); - transdaten[place][0] = neu; - daten.get(place).setName(neu); - speichernDaten(); + + 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; } - public void erhoehePunkte (String a) { //erhoeht die Punkten des Spielers um 1 - setSpieler(a); - int place = getPlace(); - int neuerWert = Integer.parseInt(transdaten[place][1])+1; - transdaten[place][1] = Integer.toString(neuerWert); - daten.get(place).setPunktestand(neuerWert); - speichernDaten(); - } - - - public void setPlace(int loc) { //setzt der Ort der Daten im Array - local = loc; - } - - public int getPlace() { //Ort der Daten im Array - return local; - } -/** - * Get the value of spieler arraylist von Spieler - * - * @return the value of spieler - */ - - - public ArrayList getDaten() { // Zur�ckgeben der gelesenen Daten aus der Textdatei - return daten; + + + /** + * + */ + 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"); } - - public void umsetzeDaten( String [][] neueDaten) {//Arraylist aus Array - for (int i = 0 ; i < neueDaten.length; i++) { - daten.add(new Spielerdaten (neueDaten[i][0], Integer.parseInt(neueDaten[i][1]))); - } - } - /** - */ - public void leseDaten() { //lese Daten aus der Textdatei und speichere die in die Arraylist - umsetzeDaten(gethighscoreTabelle()); - /* for (Spielerdaten a : daten) { // M�ll - System.out.println(a.getName() + " " +a.getPunktestand()); - }*/ - } - - public void speichernDaten() { //Speichere die bearbeiteten Daten in die Textdatei (Aus der Arraylist) - ArrayList newDaten = getDaten(); - String [][] umwandelteDaten = new String [newDaten.size()][2]; - int i = 0; - if (! newDaten.isEmpty()) { - for (Spielerdaten inhalt : newDaten ) { - umwandelteDaten [i][0] = inhalt.getName(); - umwandelteDaten [i][1] = Integer.toString(inhalt.getPunktestand()); - i++; - } - try { - BufferedWriter writer = new BufferedWriter(new FileWriter("highscore.txt")); //Erzeugen eines effizienten Writers f�r Textdateien - for (int j = 0; j < umwandelteDaten.length; j++) { - writer.write(umwandelteDaten [j][0] +";"+umwandelteDaten [j][1]); - writer.newLine(); - } - writer.close(); + + + + /** + * + */ + 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); + } } - 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 - System.err.println("Es gibt keine Dateien zum Speichern!"); - } - - public void dateiEinlesen() { - BufferedReader reader; - try { - reader = new BufferedReader(new FileReader("highscore.txt")); - String line = reader.readLine(); - while (line != null) { - String [] newline = line.split(";"); - String name = newline[0]; - int score = Integer.parseInt(newline[1]); - daten.add(new Spielerdaten (name,score)); - line = reader.readLine(); - } - reader.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - } - - // die Daten als zweidimensionales Array - // zurueckgegeben - public String[][] gethighscoreTabelle() { - System.out.println(daten.size()); - return toArray(daten); - } + 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; + } + + + /** + * + * @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; + } + + + + /** + * + * @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; + } } diff --git a/src/de/jaujau/daten/SpielerverwaltungOLD.java b/src/de/jaujau/daten/SpielerverwaltungOLD.java new file mode 100644 index 0000000..eba893e --- /dev/null +++ b/src/de/jaujau/daten/SpielerverwaltungOLD.java @@ -0,0 +1,195 @@ +/** + + * @author Alaa Aldin + + * @version 1.0 + + */ +package de.jaujau.daten; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; + +public class SpielerverwaltungOLD { + private int local; + private int level; + private Spielerdaten spieler; + private Spielerdaten aktuellerSpieler; + private ArrayList daten = new ArrayList(); + private String [][] transdaten; + public void addSpieler(String name) { //Neue Spieler hinzuf�gen + //leseDaten(); + daten.add(new Spielerdaten(name, 0)); + } + + public void setaktuellerSpieler(String name) { + aktuellerSpieler = sucheSpieler(name); + } + + public Spielerdaten sucheSpieler(String name) { + for (int i = 0; i < daten.size(); i++) { + if (daten.get(i).getName().equals(name)) { + System.out.println("SPIELERVERWALTUNG: Spieler gefunden"); + return daten.get(i); + } + } + addSpieler(name); + System.out.println("SPIELERVERWALTUNG: Neuer Spieler erstellt"); + return daten.get(daten.size()-1); + + } + + public Spielerdaten getaktuellerSpieler() { + return aktuellerSpieler; + } + /** + * Set the value of level + * + * @param newlevel the new value of level + */ + + public void setLevel(int newlevel) { + level = newlevel; + } + + /** + * Get the value of level + * + * @return the value of level + */ + + public int getLevel() { + return level; + } + + public String [][] toArray (ArrayList a){ //Arraylist in Array umwandeln + String [][]neuerArray = new String [a.size()][2]; + System.out.println("TOARRAY: " + daten.size()); + for (int j = 0 ; j< a.size(); j++) { + neuerArray[j][0] = a.get(j).getName(); + neuerArray[j][1] = Integer.toString(a.get(j).getPunktestand()); + } + return neuerArray; + } + + /** + * Set the value of spieler arraylist von Spieler + * + * @param newSpieler the new value of spieler + */ + + public void setSpieler(String a) { //setze einen Spieler ein. + leseDaten(); + transdaten = toArray(getDaten()); + System.out.println(transdaten.length); + for (int i = 0; i < transdaten.length; i++) { + if (transdaten[i][0].matches(a)) { + setPlace(i); + } + } + } + public void editName (String alt, String neu) { //Editieren des Namen des Spielers + setSpieler(alt); + int place = getPlace(); + transdaten[place][0] = neu; + //daten.get(place).setName(neu); + speichernDaten(); + } + public void erhoehePunkte (String a) { //erhoeht die Punkten des Spielers um 1 + setSpieler(a); + int place = getPlace(); + int neuerWert = Integer.parseInt(transdaten[place][1])+1; + transdaten[place][1] = Integer.toString(neuerWert); + daten.get(place).setPunktestand(neuerWert); + speichernDaten(); + } + + + public void setPlace(int loc) { //setzt der Ort der Daten im Array + local = loc; + } + + public int getPlace() { //Ort der Daten im Array + return local; + } +/** + * Get the value of spieler arraylist von Spieler + * + * @return the value of spieler + */ + + + public ArrayList getDaten() { // Zur�ckgeben der gelesenen Daten aus der Textdatei + return daten; + } + + public void umsetzeDaten( String [][] neueDaten) {//Arraylist aus Array + for (int i = 0 ; i < neueDaten.length; i++) { + daten.add(new Spielerdaten (neueDaten[i][0], Integer.parseInt(neueDaten[i][1]))); + } + } + /** + */ + public void leseDaten() { //lese Daten aus der Textdatei und speichere die in die Arraylist + umsetzeDaten(gethighscoreTabelle()); + /* for (Spielerdaten a : daten) { // M�ll + System.out.println(a.getName() + " " +a.getPunktestand()); + }*/ + } + + public void speichernDaten() { //Speichere die bearbeiteten Daten in die Textdatei (Aus der Arraylist) + ArrayList newDaten = getDaten(); + String [][] umwandelteDaten = new String [newDaten.size()][2]; + int i = 0; + if (! newDaten.isEmpty()) { + for (Spielerdaten inhalt : newDaten ) { + umwandelteDaten [i][0] = inhalt.getName(); + umwandelteDaten [i][1] = Integer.toString(inhalt.getPunktestand()); + i++; + } + try { + BufferedWriter writer = new BufferedWriter(new FileWriter("highscore.txt")); //Erzeugen eines effizienten Writers f�r Textdateien + for (int j = 0; j < umwandelteDaten.length; j++) { + writer.write(umwandelteDaten [j][0] +";"+umwandelteDaten [j][1]); + writer.newLine(); + } + writer.close(); + } + catch(IOException ioe) { + System.err.println(ioe); + } + } + else + System.err.println("Es gibt keine Dateien zum Speichern!"); + } + + public void dateiEinlesen() { + BufferedReader reader; + try { + reader = new BufferedReader(new FileReader("highscore.txt")); + String line = reader.readLine(); + while (line != null) { + String [] newline = line.split(";"); + String name = newline[0]; + int score = Integer.parseInt(newline[1]); + daten.add(new Spielerdaten (name,score)); + line = reader.readLine(); + } + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + // die Daten als zweidimensionales Array + // zurueckgegeben + public String[][] gethighscoreTabelle() { + System.out.println(daten.size()); + return toArray(daten); + } +} diff --git a/src/de/jaujau/gui/Dashboard_GUI.java b/src/de/jaujau/gui/Dashboard_GUI.java index d832866..fca5561 100644 --- a/src/de/jaujau/gui/Dashboard_GUI.java +++ b/src/de/jaujau/gui/Dashboard_GUI.java @@ -265,7 +265,7 @@ public class Dashboard_GUI extends JPanel{ getname.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - speicherung.setaktuellerSpieler(getspielername()); + speicherung.setSpieler(getspielername()); } }); panel_1.setBackground(new Color(51, 51, 153)); @@ -345,8 +345,8 @@ public class Dashboard_GUI extends JPanel{ private void renderStart(){ spielername.removeAllItems(); - for(int i = 0; i= pakete.getLevel(comboBox.getSelectedIndex())) { -// pakete.setAktivesPaket(comboBox.getSelectedIndex()); -// aktualisiereBild(); -// -// } - pakete.setAktivesPaket(comboBox.getSelectedIndex()); - aktualisiereBild(); + if(spielerverwaltung.getLevel() >= pakete.getLevel(comboBox.getSelectedIndex())) { + pakete.setAktivesPaket(comboBox.getSelectedIndex()); + aktualisiereBild(); + + } } diff --git a/src/de/jaujau/spiellogik/Anwendung.java b/src/de/jaujau/spiellogik/Anwendung.java index 74a06e6..036232b 100644 --- a/src/de/jaujau/spiellogik/Anwendung.java +++ b/src/de/jaujau/spiellogik/Anwendung.java @@ -7,13 +7,12 @@ */ package de.jaujau.spiellogik; -import javax.swing.ImageIcon; + import de.jaujau.daten.Spielerverwaltung; import de.jaujau.daten.Texturenpakete; import de.jaujau.gui.GUI; -//import de.jaujau.gui.Menue_GUI; -//import de.jaujau.gui.Spiel_GUI; + public class Anwendung { @@ -25,8 +24,8 @@ public class Anwendung { // Constructors // public Anwendung() { - speicherung = new Spielerverwaltung(); - speicherung.dateiEinlesen(); + speicherung = new Spielerverwaltung("highscore.csv"); + speicherung.lesenDatei(); texturenpakete = new Texturenpakete(); view = new GUI(texturenpakete, speicherung);