miércoles, 20 de noviembre de 2013

Clase ServidorJuego

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ahorcado;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 *
 * @author Alumnos
 */
public class ServidorJuego {
    public static final int PUERTO = 2250;
    Socket jugadores[] = new Socket[100];
    int puntos[] = new int[100];
    BufferedReader entrada[] = new BufferedReader[100];
    PrintWriter salida[] = new PrintWriter[100];
    Thread hilos[] = new Thread[100];
    String palabras[] = {"Victor","Francisco","investigacion", "Archivo",
                "Computacion","Astronomia","Ingenieria",
                "Felicidad","Salud","Dinero","Energia",
                "Fuerza","Flojera"};
    public String actual = "lkdjakj";
    String respuesta;
     int contador;
    int errores;
    int turnoActual;
    int numJugadores = 4;
    Random generador = new Random();
    public static void main( String args[] ){
        new ServidorJuego().inicia();
    }
    public ServidorJuego(){
        actual = palabras[generador.nextInt(palabras.length-1)].toUpperCase();
    }
    public void inicia(){
        System.out.println(actual);
        try {
            ServerSocket servidor = new ServerSocket(PUERTO);
           
            for( int i = 0; i < numJugadores; i++ ){
                jugadores[i] = new Socket();
                System.out.println("Esperando jugador " + i+1);
                jugadores[i] = servidor.accept();
                System.out.println("Aceptado ");
                System.out.println("Palabra: " + actual );
                entrada[i] = new BufferedReader( new InputStreamReader( jugadores[i].getInputStream() ) );
                salida[i] = new PrintWriter(jugadores[i].getOutputStream(), true);
                salida[i].println("N" + i + " " + actual);
            }
           
            System.out.println("Palabra: " + actual );  
            System.out.println("Turno Actual " + turnoActual );
            while( contador < actual.length() && errores < 10 ){
                System.out.println(" contador de correctas = " + contador);
                System.out.println("Numero de errores: " + errores );
                String cadena = entrada[turnoActual].readLine();
                if( cadena != null ){
                    System.out.println("Distinto de nulo");
                    char letra = cadena.charAt(0);
                    System.out.println("Letra recibida: "  + letra );
                    if( actual.indexOf(letra) != -1){
                        System.out.println("Letra Encontrada");
                        int temp = 0;
                        for( int i = 0; i < actual.length(); i++ ){
                            if( actual.charAt(i) == letra ){
                                temp++;
                            }
                        }
                        System.out.println("Se encontro " + temp + " veces");
                        contador += temp;
                        System.out.println("El contador es " + contador);
                        puntos[turnoActual] += (temp*10);
                        turnoActual++;
                        if( turnoActual == numJugadores ){
                            turnoActual = 0;
                        }
                        for( int i = 0; i < numJugadores; i++ ){
                            salida[i].println("C " + letra + " " + turnoActual+1);
                        }
                    }else{
                        puntos[turnoActual] -= 2;
                        errores++;
                        System.out.println("No se encontro, hay: " + errores);
                        turnoActual++;
                        if( turnoActual == numJugadores ){
                            turnoActual = 0;
                        }
                        for( int i = 0; i < numJugadores; i++ ){
                            salida[i].println("I " + letra + " " + turnoActual+1);
                        }
                    }
                   
                    System.out.println("Turno ahora es: " + turnoActual );
                }
            }
            if( errores == 10 ){
                for( int i = 0; i < numJugadores; i++ ){
                    salida[i].println("P " + puntos[i] );
                }
            }else{
                int max = -1;
                int posicion = -1;
                for( int i = 0; i < numJugadores; i++ ){
                    if( puntos[i] > max ){
                        max = puntos[i];
                        posicion = i;
                    }
                }
                for( int i = 0; i < numJugadores; i++ ){
                    if( i == posicion ){
                        salida[i].println("G " + puntos[i] );
                    }else{
                        salida[i].println("P " + puntos[i] );
                    }
                }
            }
           
           
        } catch (IOException ex) {
            Logger.getLogger(ServidorJuego.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

No hay comentarios:

Publicar un comentario