miércoles, 25 de noviembre de 2015

Clase ClienteServidor

package pacman;
//ADMINISTRA LAS CONEXIONES QUE RECIBE DE ClientePacman-------------------------------
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;

public class ClienteServidor extends Thread {

    private Socket socket;
    private static ArrayList<Socket> lista ;
    private DataInputStream entradaDatos;
    private DataOutputStream salidaDatos;
    private int nroCliente ;
    private SevidorPacman servidor ;
    private Partida partida ;
    private int aux=0;
    private static int puntajePacman=0;
    private static int puntajeFantVerde=0;
    private static int puntajeFantCian=0;
    private static int puntajeFantNaranja=0;
    private static int puntajeFantAmarillo=0;
    private static int puntajeMayor=0;
    private static String Usuario;
    private static BaseDatos bd;
   
   
   
    public ClienteServidor (Socket Cliente,
    ArrayList listcli,
    int nrocliente,
    SevidorPacman server,
    Partida partida,
    String user,
    BaseDatos bdatos
    ) throws IOException{
   
        this.socket = Cliente;
        lista = listcli;
        this.nroCliente = nrocliente;
        servidor = server ;
        this.partida = partida;
        Usuario = user;
        bd = bdatos;
       
       
       
       
        if(nroCliente==1){
        partida.getPantalla().pacmanVisible();
        }
        else if(nroCliente==2){
        partida.getPantalla().fantasmaVerdeVisible();
        }
        else if(nroCliente==3){
        partida.getPantalla().fantasmaCianVisible();
        }
        else if(nroCliente==4){
        partida.getPantalla().fantasmaNaranjaVisible();
        }
        else{
        partida.getPantalla().fantasmaAmarilloVisible();
        }
       
       
        try {
        entradaDatos = new DataInputStream(socket.getInputStream());
            salidaDatos  = new DataOutputStream(socket.getOutputStream());
           
        } catch (IOException ex) {
        System.out.println("ERROR: problemas al crear los stream de entrada y salida : " + ex.getMessage());
        }
   
    }
   
    public void run(){
        String mensajeRecibido;
        boolean conectado = true;
        while (conectado) {
            try {
             
           
            mensajeRecibido = entradaDatos.readUTF();
                int direccion = Integer.parseInt(mensajeRecibido);
             
                partida.getPantalla().setearDirrecion(direccion,nroCliente);
               
               
        /*for (Socket c : lista ) {
        DataOutputStream salidamensaje = new DataOutputStream (c.getOutputStream());
        salidamensaje.writeUTF( "Cliente " + nroCliente + " : " + mensajeRecibido);
        } */
             
               
            } catch (IOException ex) {
            System.out.println("Cliente con la IP " + socket.getInetAddress().getHostName() + " desconectado.");
                conectado = false;
                servidor.decrementarCliente();
                // Si se ha producido un error al recibir datos del cliente se cierra la conexion con el.
                try {
                    entradaDatos.close();
                    salidaDatos.close();
                } catch (IOException ex2) {
                System.out.println("ERROR: problemas al cerrar los stream de entrada y salida :" + ex2.getMessage());
                }
            }
        }  
    }

public static void envioDeMovimiento(int nroCliente, int direccion, int posX, int posY, int transformacion) throws IOException {
for (Socket c : lista ) {
DataOutputStream salidamensaje = new DataOutputStream (c.getOutputStream());
try {
salidamensaje.writeUTF(nroCliente+" "+direccion+" "+posX+" "+posY+" "+transformacion);
} catch (IOException e) {
e.printStackTrace();
}
}

}

public static void cambioMovPorControlColision(int i, int j, int k) {

try {
envioDeMovimiento(1,Direccion.getActualDir(1),i,j,0);
} catch (IOException e) {
System.out.println("ERROR: no se pudo enviar el movimiento");
e.printStackTrace();
}


}

public static void setPuntaje(int cliente, int puntaje) {
if(cliente==1){
puntajePacman+=puntaje;
if(puntajePacman>puntajeMayor)
puntajeMayor=puntajePacman;
}

else if(cliente==2){
puntajeFantVerde+=puntaje;
if(puntajeFantVerde>puntajeMayor)
puntajeMayor=puntajeFantVerde;
}

else if(cliente==3){
puntajeFantCian+=puntaje;
if(puntajeFantCian>puntajeMayor)
puntajeMayor=puntajeFantCian;
}

else if(cliente==4){
puntajeFantNaranja+=puntaje;
if(puntajeFantNaranja>puntajeMayor)
puntajeMayor=puntajeFantNaranja;
}

else if(cliente==5){
puntajeFantAmarillo+=puntaje;
if(puntajeFantAmarillo>puntajeMayor)
puntajeMayor=puntajeFantAmarillo;
}

}

public static void enviarPuntajes() throws IOException {
int cont=1;
int cantMayores=0;

if(puntajePacman==puntajeMayor)
cantMayores++;
if(puntajeFantVerde==puntajeMayor)
cantMayores++;
if(puntajeFantCian==puntajeMayor)
cantMayores++;
if(puntajeFantNaranja==puntajeMayor)
cantMayores++;
if(puntajeFantAmarillo==puntajeMayor)
cantMayores++;

for (Socket c : lista ) {
DataOutputStream salidamensaje = new DataOutputStream (c.getOutputStream());
try {
if(cont==1){
if(puntajePacman==puntajeMayor){
if(cantMayores==1){
salidamensaje.writeUTF("VICTORIA "+puntajePacman);
bd.insertarHistorial(Usuario, "P", 1, puntajePacman);
}
else{
salidamensaje.writeUTF("EMPATE "+puntajePacman);
bd.insertarHistorial(Usuario, "P", 2, puntajePacman);
}
}
else{
salidamensaje.writeUTF("DERROTA "+puntajePacman);
bd.insertarHistorial(Usuario, "P", 0, puntajePacman);
}
}


else if(cont==2){
if(puntajeFantVerde==puntajeMayor){
if(cantMayores==1){
salidamensaje.writeUTF("VICTORIA "+puntajeFantVerde);
bd.insertarHistorial(Usuario, "F", 1,puntajeFantVerde );
}
else{
salidamensaje.writeUTF("EMPATE "+puntajeFantVerde);
bd.insertarHistorial(Usuario, "F",2,puntajeFantVerde );
}
}
else{
salidamensaje.writeUTF("DERROTA "+puntajeFantVerde);
bd.insertarHistorial(Usuario, "F", 0,puntajeFantVerde );
}
}


else if(cont==3){
if(puntajeFantCian==puntajeMayor){
if(cantMayores==1){
salidamensaje.writeUTF("VICTORIA "+puntajeFantCian);
bd.insertarHistorial(Usuario, "F", 1, puntajeFantCian);
}
else{
salidamensaje.writeUTF("EMPATE "+puntajeFantCian);
bd.insertarHistorial(Usuario, "F", 2, puntajeFantCian);
}
}
else{
salidamensaje.writeUTF("DERROTA "+puntajeFantCian);
bd.insertarHistorial(Usuario, "F", 0, puntajeFantCian);
}
}


else if(cont==4){
if(puntajeFantNaranja==puntajeMayor){
if(cantMayores==1){
salidamensaje.writeUTF("VICTORIA "+puntajeFantNaranja);
bd.insertarHistorial(Usuario, "F", 1, puntajeFantNaranja);
}
else{
salidamensaje.writeUTF("EMPATE "+puntajeFantNaranja);
bd.insertarHistorial(Usuario, "F", 2, puntajeFantNaranja);
}
}
else{
salidamensaje.writeUTF("DERROTA "+puntajeFantNaranja);
bd.insertarHistorial(Usuario, "F", 0, puntajeFantNaranja);
}
}


else if(cont==5){
if(puntajeFantAmarillo==puntajeMayor){
if(cantMayores==1){
salidamensaje.writeUTF("VICTORIA "+puntajeFantAmarillo);
bd.insertarHistorial(Usuario, "F", 1, puntajeFantAmarillo);
}
else{
salidamensaje.writeUTF("EMPATE "+puntajeFantAmarillo);
bd.insertarHistorial(Usuario, "F", 2, puntajeFantAmarillo);
}
}
else{
salidamensaje.writeUTF("DERROTA "+puntajeFantAmarillo);
bd.insertarHistorial(Usuario, "F", 0, puntajeFantAmarillo);
}
}


cont++;
} catch (IOException e) {
System.out.println("ERROR: no se pudo enviar el cartel de estado con el puntaje");
e.printStackTrace();
}
}

}

public static void eliminarSuperBola(int j, int i, int k) throws IOException {
for (Socket c : lista ) {
DataOutputStream salidamensaje = new DataOutputStream (c.getOutputStream());
try {
salidamensaje.writeUTF(j+" "+i+" "+k);
} catch (IOException e) {
e.printStackTrace();
}
}

}


}

No hay comentarios:

Publicar un comentario