Update Spielerverwaltung

This commit is contained in:
Sebastian Kacza
2021-01-12 08:59:14 +01:00
parent 66ceb20ef4
commit c061331642
8 changed files with 419 additions and 237 deletions

View File

@@ -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

View File

@@ -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();
}
}

View File

@@ -6,46 +6,30 @@
*/ */
package de.jaujau.daten; package de.jaujau.daten;
//import de.jaujau.spiellogik.Spiel;
/** /**
* Class Spieler * Klasse Spielerdaten
*/ */
public class Spielerdaten { public class Spielerdaten {
private int punktestand; // Punktestand des Spielers private int punktestand;
private String name /* = Spieler.getSpieler() */; // Name des Spielers private String name;
public Spielerdaten (String name, int punkte) { //Arraylist public Spielerdaten (String name, int punkte) {
this.name = name; this.name = name;
this.punktestand = punkte; this.punktestand = punkte;
} }
/**
* Get the value of punktestand
*
* @return the value of punktestand
*/
public int getPunktestand() { //Zur<75>ckgeben der gesammelten Punkte public int getPunktestand() {
return punktestand; return punktestand;
} }
public void setPunktestand(int punkte) { //Einsetzen des Punktestands public void setPunktestand(int punkte) {
punktestand = punkte; punktestand = punkte;
} }
/**
* Get the value of name
*
* @return the value of name
*/
public String getName() { public String getName() {
return name; return name;
} }
public void setName(String Name) { //Einsetzen des Namen des Spielers
name = Name;
}
} }

337
src/de/jaujau/daten/Spielerverwaltung.java Normal file → Executable file
View File

@@ -1,195 +1,188 @@
/**
* @author Alaa Aldin
* @version 1.0
*/
package de.jaujau.daten; package de.jaujau.daten;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
public class Spielerverwaltung { public class Spielerverwaltung {
private int local;
private int level;
private Spielerdaten spieler;
private Spielerdaten aktuellerSpieler;
private ArrayList <Spielerdaten> daten = new ArrayList<Spielerdaten>();
private String [][] transdaten;
public void addSpieler(String name) { //Neue Spieler hinzuf<75>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 <Spielerdaten> 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 private File datei;
local = loc; private ArrayList <Spielerdaten> spielerliste = new ArrayList<Spielerdaten>();
} private String aktuellerSpielerName;
private int aktuellerSpielerNr;
public int getPlace() { //Ort der Daten im Array private boolean debug;
return local;
}
/**
* Get the value of spieler arraylist von Spieler
*
* @return the value of spieler
*/
public ArrayList<Spielerdaten> getDaten() { // Zur<75>ckgeben der gelesenen Daten aus der Textdatei /**
return daten; *
* @param Datei
*/
public Spielerverwaltung(String Datei) {
datei = new File(Datei);
spielerliste = new ArrayList<Spielerdaten>();
aktuellerSpielerName = "";
aktuellerSpielerNr = -1;
debug = true;
} }
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 <Spielerdaten> newDaten = getDaten(); *
String [][] umwandelteDaten = new String [newDaten.size()][2]; */
int i = 0; public void lesenDatei() {
if (! newDaten.isEmpty()) { if(datei.exists() || datei.canRead()) {
for (Spielerdaten inhalt : newDaten ) { BufferedReader reader;
umwandelteDaten [i][0] = inhalt.getName(); try {
umwandelteDaten [i][1] = Integer.toString(inhalt.getPunktestand()); reader = new BufferedReader(new FileReader(datei));
i++; String line = reader.readLine();
} while (line != null) {
try { String [] newline = line.split(";");
BufferedWriter writer = new BufferedWriter(new FileWriter("highscore.txt")); //Erzeugen eines effizienten Writers f<>r Textdateien
for (int j = 0; j < umwandelteDaten.length; j++) { //Nur einlesen wenn 2 Objekte vorhanden sind
writer.write(umwandelteDaten [j][0] +";"+umwandelteDaten [j][1]); if(newline.length == 2) {
writer.newLine(); String name = newline[0];
} int score = Integer.parseInt(newline[1]);
writer.close(); spielerliste.add(new Spielerdaten (name,score));
}
line = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
} }
catch(IOException ioe) { if(debug)System.out.println("SPIELERVERWALTUN: " + spielerliste.size() + " Enträge gelesen");
System.err.println(ioe); }
/**
*
*/
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);
}
} }
} }
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();
}
} /**
*
* @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");
}
}
// die Daten als zweidimensionales Array
// zurueckgegeben
public String[][] gethighscoreTabelle() { /**
System.out.println(daten.size()); *
return toArray(daten); * @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;
}
} }

View File

@@ -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 <Spielerdaten> daten = new ArrayList<Spielerdaten>();
private String [][] transdaten;
public void addSpieler(String name) { //Neue Spieler hinzuf<75>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 <Spielerdaten> 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<Spielerdaten> getDaten() { // Zur<75>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 <Spielerdaten> 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);
}
}

View File

@@ -265,7 +265,7 @@ public class Dashboard_GUI extends JPanel{
getname.addMouseListener(new MouseAdapter() { getname.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
speicherung.setaktuellerSpieler(getspielername()); speicherung.setSpieler(getspielername());
} }
}); });
panel_1.setBackground(new Color(51, 51, 153)); panel_1.setBackground(new Color(51, 51, 153));
@@ -345,8 +345,8 @@ public class Dashboard_GUI extends JPanel{
private void renderStart(){ private void renderStart(){
spielername.removeAllItems(); spielername.removeAllItems();
for(int i = 0; i<spielerverwaltung.gethighscoreTabelle().length; i++) { for(int i = 0; i<spielerverwaltung.getHighscoreTabelle().length; i++) {
spielername.addItem(spielerverwaltung.gethighscoreTabelle()[i][0]); spielername.addItem(spielerverwaltung.getHighscoreTabelle()[i][0]);
} }
} }
@@ -359,7 +359,7 @@ public class Dashboard_GUI extends JPanel{
highscore.revalidate(); highscore.revalidate();
} }
String[][] rowData = spielerverwaltung.gethighscoreTabelle(); //Bsp. Datensatz muss noch entfernt werden. String[][] rowData = spielerverwaltung.getHighscoreTabelle(); //Bsp. Datensatz muss noch entfernt werden.
String[] columnNames = {"Name", "Punkte"}; String[] columnNames = {"Name", "Punkte"};

View File

@@ -133,14 +133,11 @@ public class texturenauswaehlen_GUI extends JFrame{
* Speichert die Auswahl des akutellen Paketes * Speichert die Auswahl des akutellen Paketes
*/ */
private void speichern() { private void speichern() {
// Austauschen sobalt Spielerverwaltung fertig if(spielerverwaltung.getLevel() >= pakete.getLevel(comboBox.getSelectedIndex())) {
// if(spieler.getLevel() >= pakete.getLevel(comboBox.getSelectedIndex())) { pakete.setAktivesPaket(comboBox.getSelectedIndex());
// pakete.setAktivesPaket(comboBox.getSelectedIndex()); aktualisiereBild();
// aktualisiereBild();
// }
// }
pakete.setAktivesPaket(comboBox.getSelectedIndex());
aktualisiereBild();
} }

View File

@@ -7,13 +7,12 @@
*/ */
package de.jaujau.spiellogik; package de.jaujau.spiellogik;
import javax.swing.ImageIcon;
import de.jaujau.daten.Spielerverwaltung; import de.jaujau.daten.Spielerverwaltung;
import de.jaujau.daten.Texturenpakete; import de.jaujau.daten.Texturenpakete;
import de.jaujau.gui.GUI; import de.jaujau.gui.GUI;
//import de.jaujau.gui.Menue_GUI;
//import de.jaujau.gui.Spiel_GUI;
public class Anwendung { public class Anwendung {
@@ -25,8 +24,8 @@ public class Anwendung {
// Constructors // Constructors
// //
public Anwendung() { public Anwendung() {
speicherung = new Spielerverwaltung(); speicherung = new Spielerverwaltung("highscore.csv");
speicherung.dateiEinlesen(); speicherung.lesenDatei();
texturenpakete = new Texturenpakete(); texturenpakete = new Texturenpakete();
view = new GUI(texturenpakete, speicherung); view = new GUI(texturenpakete, speicherung);