Ich habe eine Methode createGame
auf Server, die eine Instanz eines Spiels erstellen. Ich möchte eine andere Instanz des Spiels für verschiedene Kunden erstellen, aber wenn ich eine andere Instanz des Spiels erstelle, funktioniert das erste erstellte Spiel nicht mehr. HierMehrere Spiel-Instanz
ist der Code:
private void createGame(){
gameThread.add(new GameThread(playerList, controllers.get(controllerNumber), controllers.get(controllerNumber)));
gameThread.get(gameNumber).start();
//just to shift the array of game
gameNumber++;
//shift the array of controller
controllerNumber++;
clientCounter = 0;
playerList.clear();
controllers.add(new ControllerServerSide());
}
Warum kann ich nicht zwei Spiele gleichzeitig spielen, wenn jeder auf einem anderen Thread ist?
EDIT:
GameThread
public class GameThread extends Thread{
private Settings settings;
private Game game;
private static int gamesActive = 0;
public GameThread(ArrayList<Player> playerList, Observer observer, ObservableInput controllerServer){
ArrayList<Player> newPlayerList = new ArrayList<>();
int size = playerList.size();
for(int i = 0; i < size; i++){
newPlayerList.add(playerList.remove(0));
}
settings = new Settings("src/main/java/it/polimi/ingsw/ps05/gamelogic/mappa.xml", newPlayerList);
game = new Game(settings, gamesActive++, observer, controllerServer);
game.init();
}
public void run(){
game.play();
}
}
Es tut mir leid für den fehlenden Code, aber wahrscheinlich ist es zu viel, um es hier zu posten. Allerdings werde ich den Code bearbeiten, weil ich eine kleine Änderung vorgenommen habe, aber das Problem ist das gleiche. Wie Sie sehen können, ist die Arraylist der Controller nicht gelöscht und ich nehme für jedes Spiel einen anderen Controller. In Bezug auf die playerList werden ihre Elemente in eine neue Liste innerhalb von GameThread kopiert, wie ich sie jetzt im Code zeige, bevor ich sie säubere. Ich habe auch im Debugger eingecheckt, die beiden GameThreads haben unterschiedliche PlayerList. Da ist etwas, das ich nicht bekomme. –
Was ist mit dem ersten Spiel nach dem Erstellen des zweiten? Es hört auf? es stürzt ab? Läuft das Secong-Spiel? –
Das zweite Spiel funktioniert, das erste gameThread ist im Debugger auf "Running" eingestellt, kann aber keine Eingaben machen. –