18/04/2009, 21:13
|
| | Fecha de Ingreso: abril-2009
Mensajes: 3
Antigüedad: 15 años, 9 meses Puntos: 0 | |
Respuesta: Problema Cliente - Servidor Java esta es la otra parte del código del servidor, ambas partes van en el mismo archivo
Código:
private class Jugador implements Runnable {
private Socket conexion;
private Scanner entrada;
private Formatter salida;
private int numerojugador;
private String turno;
private boolean enEspera = true;
private boolean clientesListos;
public Jugador(Socket socket, int numero, boolean clientesListos) {
this.clientesListos = clientesListos;
numerojugador = numero;
if (clientesListos == true) {
turno = "Sin Turno";
} else {
turno = TURNOS[numerojugador];
}
conexion = socket;
try {
entrada = new Scanner(conexion.getInputStream());
salida = new Formatter(conexion.getOutputStream());
} catch (IOException ex) {
ex.printStackTrace();
System.exit(1);
}
System.out.println("Servidor: Iniciado Jugador");
for (int i = 0; i < 15; i++) {
if (entrada.hasNext()) {
int nave = entrada.nextInt();
if (nave <= 0) {
if (numerojugador == JUGADOR_1) {
areaJuego1[Math.abs(nave)] = "1";
} else {
areaJuego2[Math.abs(nave)] = "1";
}
}
}
}
}
public void movidaOtroJugador(int ubicacion) {
salida.format("Movida Oponente\n");
salida.format("%d\n", ubicacion);
salida.flush();
System.out.println("Servidor: Procesando Jugada Otro jugador");
}
public void run() {
try {
mostrarMensaje("Jugador " + turno + " Conectado\n");
salida.format("%s\n", turno);
salida.flush();
if ( clientesListos == true) {
salida.format("Conexion Rechazada\n");
System.out.println("Conexion Rechazada");
salida.flush();
try {
conexion.close();
} catch (IOException ex) {
ex.printStackTrace();
}
} else {
if (numerojugador == JUGADOR_1) {
salida.format("%s\n%s", "Juador 1 conectado", "Esperando por el otro jugador\n");
salida.flush();
lock.lock();
try {
while (enEspera) {
otroJugadorConectado.await();
}
} catch (InterruptedException ex) {
ex.printStackTrace();
} finally {
lock.unlock();
}
salida.format("Otro jugador conectado. Su turno.\n");
salida.flush();
} else {
salida.format("Jugador 2 conectado, por favor espere\n");
salida.flush();
}
while (!juegoTerminado()) {
int ubicacion = 0;
if (entrada.hasNext()) {
ubicacion = entrada.nextInt();
}
if (validarJugada(ubicacion, numerojugador)) {
mostrarMensaje("\nUbicacion: " + ubicacion + "\n");
salida.format("Jugada Valida.\n");
salida.flush();
if (oportunidadesRestantes1 - 1 == 0 || oportunidadesRestantes2 - 1 == 0) {
salida.format("partida terminada");
}
} else {
salida.format("Jugada Invalida, prueba otra vez\n");
salida.flush();
}
}
}
} finally {
try {
conexion.close();
} catch (IOException ex) {
ex.printStackTrace();
System.exit(1);
}
}
}
public void setSuspendido(boolean status) {
enEspera = status;
}
}
}
|