Campo Minado Multiplayer

Pessoal, tenho o jogo feito é o campo minado que quando achada uma mina ele coloca uma bandeira em cima e soma na pontuação do jogador, só que não sei como fazer o jogo multiplayer
o jogo já está feito , só falta colocar ele como cliente/servidor e criar os player e pontuação.

gostaria de algum tutorial ou alguém que já tenha feito poderia me enviar o projeto para mim olhar como foi feito.
obrigado.

Velho, não tenho isso não. Posso te aconselhar a fazer, sei que não é difícil. Além de aprender muito, você personaliza do jeito que você quer. De uma procurada na net. Tem muito conteúdo!!

Boa sorte!

por exemplo, gostaria de um exemplo de uma servidor e um cliente que quando iniciado o servidor ele tenha que esperar dois jogadores se conectarem e ai sim abrir a tela de jogo…

alguém ?

A melhor alternativa para seu problema parece ser o uso de RMI, busque mais a respeito.

então me achem um exemplo desse tipo, eu procurei, (um exemplo que faça um tela de jogo atualizar para os dois cliente ) ,sincronizar eles na mesma tela , não achei eu so acho de troca de msg e essas CHAT e não sei o que.

Tudo sempre vai se basear em trocas de mensagens você tem que abstrair mais.

Mas creio que RMI seja uma boa pois nesse caso a interação dos clientes deve ser utilizar uma interface, mais transparente.

vamos por parte, pra começar
como conectar dois clients na mesma tela do jogo ?
alguém de um exemplo por favor.

essa que é a dificuldade, eu preciso de exemplo , ver como faz essas chamadas… sem isso não vou conseguir fazer.

[code]package aplicacao;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
static ServerSocket serverSocket;
static Socket socket;
static DataOutputStream out;
static DataInputStream in;
static Players[] player = new Players[2];

public static void main(String[] args) throws Exception {
	System.out.println("Starting server..");
	serverSocket = new ServerSocket(7777);
	System.out.println("ServerStarted");

	while (true) {
		socket = serverSocket.accept();
		for (int i = 0; i < 2; i++) {

			System.out.println("Conectado com " + socket.getInetAddress());
			out = new DataOutputStream(socket.getOutputStream());
			in = new DataInputStream(socket.getInputStream());

			if (player[i] == null) {
				
				player[i] = new Players(out, in, player);
				Thread thread = new Thread(player[i]);
				thread.start();
				break;
			}
		}
	}
}

}

class Players implements Runnable {

DataOutputStream out;
DataInputStream in;
Players[] player = new Players[2];
String name;

public Players(DataOutputStream out, DataInputStream in, Players[] player) {
	this.out = out;
	this.in = in;
	this.player = player;
}

@Override
public void run() {
	try {
		name = in.readUTF();
	} catch (IOException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	while (true) {
		try {
			String message = in.readUTF();
			for (int i = 0; i < 2; i++) {
				if (player[i] != null) {
					player[i].out.writeUTF(name +":"+ message);
				}
			}
		} catch (IOException e) {

			this.out = null;
			this.in = null;
		}
	}
}

}
[/code]

A classe cliente está logo abaixo :

package aplicacao;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;

public class Client {

	static Socket socket;
	static DataInputStream in;
	static DataOutputStream out;
	public static void main(String[] args) throws Exception{
		socket = new Socket("localhost",7777);
		
		in = new DataInputStream(socket.getInputStream());
		out = new DataOutputStream(socket.getOutputStream());
		
		Input input = new Input(in);
		
		Thread thread = new Thread(input);
		thread.start();
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("Digite seu nome : ");
		String name = sc.nextLine();
		out.writeUTF(name);
		
		while(true){
			String sendMessage = sc.nextLine();
			out.writeUTF(sendMessage);
		}

	}

}

class Input implements Runnable{
	
	DataInputStream in;
		
	public Input(DataInputStream in) {
		this.in = in;
	}
	
	@Override
	public void run() {
		while(true){
			String message;
			try {
				message = in.readUTF();
				System.out.println(message);
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	
	}
	
}

agora eu pergunto como fazer um jogo campo minado que ja está implementado iniciar para os dois clientes e atualizar seus movimento , ta ai o que tenho mas não sei utilizar alguém se puder ?

OK vlw pessoal

Pesquise sobre o que falaram para usar. Em pesquisa rápida achei:



O resto vai ser sua lógica, estudos, pesquisas e tentativas para evoluir e poder perguntar pontualmente novas dúvidas.

como eu chamaria um objeto campo minado e colocaria somente 2 client nele e cada alteracao feita por um cliente o outro recebe no mesmo tempo ?

Dizer que falta “só” o multiplayer é como dizer que para um carro funcionar, falta “só” construir o motor.

Não tem nada de trivial, nem de fácil para inserir um módulo multiplayer. Provavelmente, boa parte da organização das suas classes vai mudar.

Infelizmente, não existe um game.setMultiplayer(true);

Pode ser sockets também. Tem bastante tutorial na net sobre isso.

[quote=Dallagnol]então me achem um exemplo desse tipo, eu procurei, (um exemplo que faça um tela de jogo atualizar para os dois cliente ) ,sincronizar eles na mesma tela , não achei eu so acho de troca de msg e essas CHAT e não sei o que. [/quote]Em vez de textos de bate-papo (vulgo chat) você passa a transmitir o que quer que seja atualizado. Boa parte da inteligência e toda a interação visual fica no cliente. Só se transmite o absolutamente necessário.

Ou seja, os exemplos ajudam o suficiente, o resto você vai ter que fazer mesmo…