Hallöle,
ich habe bei meinem bisherigen Kartenspiel eine sehr unvorteilhafte Variante der Variablenspeicherung gehabt. Es existieren zwei Spieler und die Variablen für Spielername, Punktzahl und Karten auf der Hand existierte für jeden Spieler einzeln.
Ungefähr so hier:
private static String spielername1 = "";
private static int punktespieler0 = 0;
private static int punktespieler1 = 0;
private static List<Gastkarte> kartenspieler0 = new ArrayList<Gastkarte>();
private static List<Gastkarte> kartenspieler1 = new ArrayList<Gastkarte>();```
Das funktionierte bisher auch wunderbar. Mit entsprechenden Gettern und Settern konnte ich dann alles verstellen.
Nun aber habe ich mir gedacht, ich mache einfach eine Klasse Spieler mit diesen Eigenschaften und erstelle davon zwei Spieler.
So weit so gut, so sieht meine Spielerklasse aus:
```package spiel;
import java.util.ArrayList;
import java.util.List;
public class Spieler {
private String name;
private int punkte = 0;
private List<Gastkarte> handkarten = new ArrayList<Gastkarte>();
public Spieler() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPunkte() {
return punkte;
}
public void setPunkte(int punkte) {
this.punkte = punkte;
}
public List<Gastkarte> getHandkarten() {
return handkarten;
}
public void setHandkarten(ArrayList<Gastkarte> handkarten) {
this.handkarten = handkarten;
}
}```
Danach habe ich zwei Spieler erstellt:
```private Spieler[] spieler = new Spieler[2];
spieler[0] = new Spieler();
spieler[1] = new Spieler();```
Als Array gespeichert, damit ich einfach immer nur spieler[num].irgendwas schreiben muss, weil in int num die Nummer des aktuellen Spielers gespeichert ist.
So weit so gut. Aber es gibt ein Problem mit der ArrayList.
Ich kann jederzeit mit `spieler[0].getName()` oder `spieler[0].getPunkte()` den Namen und die Punktzahl abrufen. Aber jedes mal, wenn ich irgendetwas mit der ArrayList für die Handkaren machen möchte, kommt eine **NullpointerException** für diese Zeile.
`System.out.println(spieler[0].getHandkarten());`
`spieler[0].getSpieler(0).getHandkarten().add(new Gastkarte());`
Ich versteh das irgendwie nicht. Die ArrayList ist initialisiert und steht ansonsten in der Klasse Spieler nicht anders da als alle anderen Variablen, die aber funktionieren.
Sieht jemand den Fehler?
Gruß
Lukas