Boa tarde...
Estou desenvolvendo pra projeto na faculdade o jogo Batalha Naval onde duas pessoas podem jogar via rede usando um servidor, por meio de xml-rpc.
Bom quanto a parte do jogo tranquilo, mas estou com dúvidas quanto a conexão entre cliente e servidor.
Bom o cliente tem um loop que enquanto um cliente joga o outro fica no loop esperando as posições do servidor as posiçoes i,j, para que as figuras do cliente que estava em loop sejam substituidas pela clicada pelo outro cliente. Quanto ao loop enquanto o retorno do servidor for igual a -1, -1 fica no loop, quando for jogar ele recebe do servidor as posicões i,j.
Não sei bem como iniciar o jogo, garantir a sincronia dos clientes, enquanto um joga o outro fica em loop e depois reverter a situação, bem como iniciar o jogo como eu iniciaria o jogo, qual dos clientes começa jogando e qual começa em loop.
Classe XMLRPCServer
public class XMLRPCServer {
/**
* Porta na qual o servidor aguardará requisições.
*/
private final int DEFAULT_PORT = 3434;
public XMLRPCServer() throws IOException, XmlRpcException, ServletException {
XmlRpcServlet servlet = new XmlRpcServlet();
ServletWebServer webServer = new ServletWebServer(servlet,DEFAULT_PORT);
WebServer webServer = new WebServer(DEFAULT_PORT);
System.out.println("Servidor: criando...");
XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
System.out.println("Servidor: criado.");
PropertyHandlerMapping phm = new PropertyHandlerMapping();
phm.addHandler("",BatalhaNaval.class);
xmlRpcServer.setHandlerMapping(phm);
XmlRpcServerConfigImpl config =
(XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
config.setEnabledForExtensions(true);
config.setContentLengthOptional(false);
System.out.println("Servidor: configurado.");
System.out.println("Servidor: iniciando...");
webServer.start();
System.out.println("Servidor: iniciado.");
}
public static void main(String[] args) throws IOException, XmlRpcException,
ServletException {
new XMLRPCServer();
}
}
public class BatalhaNaval{
public static ElementoJogo tabuleiro[][];//cria o tabuleiro
public static int posicao[][] = new int[9][9];//posicoes dos barcos no tabuleiro//
int linhas;
int colunas;
private BatalhaListener listener;
public void setListener(BatalhaListener listener) {
this.listener = listener;
}
public BatalhaNaval(int linhas, int colunas)
{
this.linhas = linhas;
this.colunas = colunas;
this.tabuleiro = new ElementoJogo[linhas][colunas];
}
public static void zeraPosicao(){
/**/
for (int l = 0; l < 9; l++)//preenche a matriz com 0
Arrays.fill(posicao[l],0);
/**/
}
public void setElementoJogo(ElementoJogo elemento, int linha, int coluna)
{
this.tabuleiro[linha][coluna] = elemento;
if (elemento != null)
{
elemento.setPosicao(linha, coluna);
}
else{
}
}
public ElementoJogo getElemento(int linha, int coluna)
{
return this.tabuleiro[linha][coluna];
}
public void realizaJogada(int linha, int coluna)
{
tabuleiro[linha][coluna].setClicado(true);
fireBatalhaAtualizada();
}
private void fireBatalhaAtualizada()
{
listener.atualizaBatalha();
}
}
Se puderem me ajudar eu agradeço muito...
