Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/04/2009, 21:13
Fragger1906
 
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;
        }
    }
}