Batalha Naval Cliente/Servidor XML-RPC

2 respostas
N

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();
   }  
}
Classe BatalhaNaval
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...

2 Respostas

victorwss

coloque o seu código dentro das tags [ code ] e [ /code ] (sem os espaços).

N

Por favor, alguém pode me ajudar quanto a isto?

Preciso de ajuda urgente quanto a isto :frowning:

Obrigado…

Criado 15 de abril de 2008
Ultima resposta 21 de abr. de 2008
Respostas 2
Participantes 2