У меня есть проект java, над которым я работаю, где я создал многопользовательскую игру Ludo (код отвратителен, но работает). Игра подключается к серверу, и на основе ввода локального клиента (который представляет собой кнопку) игра затем перемещает эту игровую статуэтку Ludo в место, которое должно быть для всех клиентов. Это отлично работает. Вот код для этого (в методе run () моего потока, который прослушивает выходные данные сервера):
switch(temp_currentTurn) {
case 0:
if(temp_greenCounter == 1){
green1.setBounds(greenArrX.get(currX), greenArrY.get(currY), size.width, size.height);
}
if(temp_greenCounter == 2){
green2.setBounds(greenArrX.get(currX), greenArrY.get(currY), size.width, size.height);
}
if(temp_greenCounter == 3){
green3.setBounds(greenArrX.get(currX), greenArrY.get(currY), size.width, size.height);
}
if(temp_greenCounter == 4){
green4.setBounds(greenArrX.get(currX), greenArrY.get(currY), size.width, size.height);
}
break;
case 1:
if(temp_yellowCounter == 1){
yellow1.setBounds(yellowArrX.get(currX), yellowArrY.get(currY), size.width, size.height);
}
if(temp_yellowCounter == 2){
yellow2.setBounds(yellowArrX.get(currX), yellowArrY.get(currY), size.width, size.height);
}
if(temp_yellowCounter == 3){
yellow3.setBounds(yellowArrX.get(currX), yellowArrY.get(currY), size.width, size.height);
}
if(temp_yellowCounter == 4){
yellow4.setBounds(yellowArrX.get(currX), yellowArrY.get(currY), size.width, size.height);
}
break;
case 2:
if(temp_redCounter == 1){
red1.setBounds(redArrX.get(currX), redArrY.get(currY), size.width, size.height);
}
if(temp_redCounter == 2){
red2.setBounds(redArrX.get(currX), redArrY.get(currY), size.width, size.height);
}
if(temp_redCounter == 3){
red3.setBounds(redArrX.get(currX), redArrY.get(currY), size.width, size.height);
}
if(temp_redCounter == 4){
red4.setBounds(redArrX.get(currX), redArrY.get(currY), size.width, size.height);
}
break;
case 3:
if(temp_blueCounter == 1){
blue1.setBounds(blueArrX.get(currX), blueArrY.get(currY), size.width, size.height);
}
if(temp_blueCounter == 2){
blue2.setBounds(blueArrX.get(currX), blueArrY.get(currY), size.width, size.height);
}
if(temp_blueCounter == 3){
blue3.setBounds(blueArrX.get(currX), blueArrY.get(currY), size.width, size.height);
}
if(temp_blueCounter == 4){
blue4.setBounds(blueArrX.get(currX), blueArrY.get(currY), size.width, size.height);
}
break;
}
repaint();
Фигурка устанавливается на основе оператора switch (чья она очередь) и фигурки перемещается на основе координат X и Y, которые он получает. Тем не менее, для каждого игрока, когда нажимается кнопка, кнопки обновляются только локально, например:
greenDie.setEnabled(false);
yellowDie.setEnabled(true);
Нечто похожее для других кнопок, только с добавленной логикой c, которая отлично работает локально для сколько игроков играют.
Мой вопрос в том, что я пытался поместить ту же логику c в часть выполнения моего кода, но она не обновляет кнопки для каждого игрока. Как я могу обновить кнопки для каждого подключенного игрока, а не только локально?