私はゲームのインスタンスを作成するサーバー上にメソッド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());
}
なぜ私は、同時に2つのゲームをプレイできないのですか?
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();
}
}
不足しているコードは申し訳ありませんが、ここに投稿するにはあまりにも多すぎます。しかし、私は小さな変更を行ったのでコードを編集しますが、問題は同じです。 ご覧のとおり、コントローラのarraylistはクリアされず、すべてのゲームで異なるコントローラを使用します。 playerListに関しては、要素を消去する前にコードに表示されているように、GameThread内の新しいリストに要素がコピーされます。 私はデバッガでもチェックしました.2つのGameThreadには異なるplayerListがあります。 私には得られないものがあります。 –
2番目のゲームを作成した後に最初のゲームに何が起こったのですか?それは止まる?それはクラッシュする?セコングゲームは覚醒しますか? –
2番目のゲームが動作し、最初のgameThreadはデバッガで「実行中」に設定されていますが、入力できません。 –