0
我有一個方法createGame
在服務器上創建一個遊戲的實例。我想要的是爲不同客戶創建另一個遊戲實例,但是當我創建另一個遊戲實例時,創建的第一個遊戲不再起作用。多個遊戲實例
下面是代碼:
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());
}
爲什麼我不能在同一時間打兩場比賽,如果每一個都是在不同的線程?
編輯:
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();
}
}
對於缺少的代碼,我很抱歉,但是在這裏發佈它可能太多了。不過,我會編輯代碼,因爲我做了一些小改動,但問題是一樣的。 正如你所看到的,控制器的數組列表不會被清除,並且我爲每個遊戲採用不同的控制器。 關於playerList,它的元素被複制到GameThread中的新列表中,正如我現在在代碼中展示給你的,然後再清除它。 我也檢查過Debugger,這兩個GameThread有不同的playerList。 有些東西我不明白。 –
創建第二個遊戲後,第一個遊戲會如何?它停止?它崩潰? Seong遊戲炒鍋嗎? –
第二款遊戲有效,第一款遊戲線程在調試器中設置爲「正在運行」,但我無法給它任何輸入。 –