Dlaczego zmienną "NumerAktualnejPozycji" definiujesz jako statyczną? Musisz się liczyć wtedy z tym że do każdej instancji czy jak kto woli po polsku egzemplarza obiektu zmienna ta będzie miała taką samą wartość. Nie będziesz miał wtedy możliwości rozgrywania np. 2 gier na raz, a do tego będziesz musiał się męczyć z czyszczeniem jej po każdej rozegranej grze. Moim zdaniem powinieneś stworzyć klasę GameBoard (pol. PlanszaDoGry), w niej trzymać listę graczy, a w obiekcie każdego gracza nr pola na którym się znajduje. Wtedy usuwając referencję do obiektu GameBoard znikną wszystkie wartości, a tworząc jego nową instancję będziesz mógł bezproblemowo zacząć nową grę bez borykania się z zerowaniem wszystkich pól. Do tego do obiektu GameBoard dodałbym booleana np isGameEnded(), który zwracał by odpowiednią wartość w zależności od tego czy którykolwiek gracz jest już po za planszą, jeżeli jest zwracało by tak, jeżeli nie - nie. Na podstawie wartości zwróconej przez tą metodę będziesz mógł zadecydować czy rozpocząć nową grę, czy nie.
public boolean isGameEnded() {
for(Player p : this.players) {
if(p.getFieldNumber() >= this.board.getMaxFieldNumber() {
return true;
}
}
return false;
}
Edit:
Mógłbyś nawet w tej metodzie zwracać gracza, który wygrał i dawać mu np. jakąś nagrode
Edit2: Jak zaczynasz to łap jeszcze poniższe klasy, żeby rozwiać już wszystkie twoje wątpliwości
public class Player {
// Domyślne gracz jest na starcie, czyli w tym przypadku polu nr. 0
private int fieldNumber = 0;
public Player() {
}
public int getFieldNumber() { return this.fieldNumber; }
public void move(int fields) {
this.fieldNumber += fields;
}
}
public class GameBoard {
private List<Player> players = new ArrayList<>();
public Gameboard() {}
public boolean isGameEnded // Napisane wyżej
}
public class Cube {
private Random random = new Random();
public int getFiledsToMove() {
return random.nextInt(6) + 1;
}
}