Jogo de cartas com sockets

2 respostas
E

Boa tarde pessoal,
estou começando a fazer um jogo de cartas (super trunfo), onde tenho que implementar um servidor e vários clientes, onde cada cliente deve ser controlado por uma Thread, e uma partida só pode acontecer quando dois clientes estão conectados.

public class Servidor {
	Baralho b = new Baralho();// Baralho é a classe onde eu passo os valores das cartas
	
	 List<Carta> jogA =  b.lista.subList(0, 5);
	 List<Carta> jogB = b.lista.subList(5, 10);
	
	boolean funciona = true;
     int codCliente = 0;     
      
	public Servidor() throws IOException{
		 b.Embaralhar();
		ServerSocket servidor = new ServerSocket(12345);
	     System.out.println("Porta 12345 aberta!");
	  
		  while (funciona){
		    	 Socket cliente = servidor.accept();
			     
			     Escravo escravo = new Escravo(cliente, codCliente);
			     Thread t = new Thread(escravo);
			     t.start();
			  
			    escravo.sendMessage("msg do server");
			     codCliente++;
		  }
		  servidor.close();
		  System.out.println("O servidor foi fechado");
	}
	
	public static void main(String[] args) throws IOException {
	   new Servidor();
	   
	     
	   }
	 }
public class Cliente extends Thread {
   
	
	private final String ip;
	private final int port;
	private Socket connection;
	private DataOutputStream out;
	private DataInputStream in;
	private BufferedWriter writer;
	private BufferedReader reader;
	private boolean run;

	public Cliente(String ip, int port ) {
		this.ip = ip;
		this.port = port;
		this.run = true;
	}
	
	public void connect() throws IOException{
		
		connection = new Socket(ip, port);
	     System.out.println("O cliente se conectou ao servidor!");
	     
	     
	     out = new DataOutputStream(new BufferedOutputStream (connection.getOutputStream()));
	     in = new DataInputStream(new BufferedInputStream(connection.getInputStream()));
	     
	     
	     writer = new BufferedWriter(new OutputStreamWriter (connection.getOutputStream()));
	     reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
		
	}
	
	public void close() throws IOException{
		
		run = false;
		out.close();
		in.close();
		reader.close();
		writer.close();
		connection.close();
		
		
	}
	
	@Override
	public void run() {
		System.err.println("Cliente rodando");
		try{
			System.err.println("Cliente vai conectar");
			this.connect();
			System.err.println("Cliente conectou");
			while (!connection.isClosed() || connection.isConnected()|| connection.isBound()){
				System.err.println("Cliente esperando mensagem");
				String message = reader.readLine();
				System.err.println(message);
			//	if (message.equals("END")){
			//		this.close();
			//		break;
			//	}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		Cliente cliente = new Cliente("localhost", 12345);
		cliente.start();
	}
	
	
 }

ainda tenho uma classe carta e uma baralho onde atribuo os valores das cartas e insiro em uma List.
Essa é basicamente a estrutura inicial que tenho.

Minhas dúvidas são como faço para diferenciar um cliente do outro, e como faço a comunicação cliente/cliente para saber qual carta o oponente jogou.

se alguém puder me ajudar...

2 Respostas

marciofermino

amigo seria possivel estarmos falalando sobre sockets no skype ::

Claro que depois resolvido colocaríamos aqui no forum para ajudar outras pessoas;

Se puder… obrigado

skype marciofermino
msn [email removido]

E

acabei de te add no skype!

Criado 28 de abril de 2013
Ultima resposta 29 de abr. de 2013
Respostas 2
Participantes 2