miércoles, 20 de noviembre de 2013

Juego Ahorcado Distribuido

Interfaz del Ahorcado:

public interface ClienteAhorcadoint{
 
 public  void enviarMensaje();
 public  String crearMensajeRespuesta();
 public  int getEstadoJuego();
 public  char getLetra();
 public  int getNroIntentos();
 public  String getPalabraEnProgreso();
 public  void setEstadoJuego(int estadoJuego);
 public  void setLetra(char letra);
 public  void leerMensaje(String mensaje);
 public  void imprimirMensajeEnPantalla();
 public String getPalabraActualGuionBajo();
 public  String mostrarEstado();
 public  void imprimirEntrada();
 public  void imprimirSalida();
}
 

Implementación de la Interfaz del Ahorcado:

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.StringTokenizer;

public class ClienteAhorc implements ClienteAhorcadoint {
private static final int INACTIVO = 0;
private static final int JUGANDO = 1;
private static final int GANO = 2;
private static final int PERDIO = 3;
private static final int SolicJuegoNuevo = 4;
private static final int JuegoTerminado = 5;
private static final int puerto = 10028;
private static BufferedReader in = null;
private static DataOutputStream out = null;
private static Socket conexion;
private static int edoJuego = INACTIVO;
private static int intentRest = 6;
private static char letra = '*';
private static String palabraEnProgreso = "*";
private static Integer numMensaje = 0;
public static void main(String[] args) {
try {
     ClienteAhorc Ahcd = new ClienteAhorc();
     conexion = new Socket("192.168.15.132", 10028);
  BufferedReader entradaUsuario = new BufferedReader(new InputStreamReader(System.in));
  System.out.println("Iniciando Conexion con servidor...");
  in = new BufferedReader(new InputStreamReader(conexion.getInputStream()));
  out = new DataOutputStream(conexion.getOutputStream());
  System.out.println("Conexion realizada...");
  boolean jugando = true;
  while (jugando == true) {
      if (edoJuego == INACTIVO) {
       Ahcd. setEstadoJuego(SolicJuegoNuevo);
    Ahcd.enviarMensaje();
    } else {
       Ahcd.leerMensaje(in.readLine());
       if (edoJuego == JUGANDO) {
     Ahcd.imprimirMensajeEnPantalla();
     System.out.println("Ingrese una letra: ");
     Ahcd.setLetra(entradaUsuario.readLine().charAt(0));
     Ahcd.enviarMensaje();
     } else {
        if (edoJuego == GANO) {
        Ahcd. setEstadoJuego(JuegoTerminado);
        Ahcd.imprimirMensajeEnPantalla();
        jugando = false;
        System.out.println("¡Felicidades! Ganaste en el juego de Ahorcado");
        }
        if (edoJuego == PERDIO) {
         Ahcd. setEstadoJuego(JuegoTerminado);
         Ahcd.imprimirMensajeEnPantalla();
         jugando = false;
         System.out.println("Lastima, no te quedan mas intentos.\nHas perdido");
        }
      System.out.println("Juego terminado");
       }
    }
   }
 }catch (IOException ex) {
    System.out.println("Error de Entrada/Salida");
    System.out.println("No fue posible realizar la conexion, posiblemente el servidor este inactivo.");
    }
}

public  void enviarMensaje() {
  ClienteAhorc Ahcd = new ClienteAhorc();
  try {
     if (edoJuego == SolicJuegoNuevo) {
      out.writeBytes(Ahcd.crearMensajeRespuesta());
  } else {
   out.writeBytes(Ahcd.crearMensajeRespuesta());
   }
 }catch (IOException iOException) {
     System.out.println("Error al enviar el mensaje");
  }
}
 
public  String crearMensajeRespuesta() {
    return edoJuego + "#" + intentRest + "#" + letra + "#" + palabraEnProgreso + "#" +numMensaje + "\n";
 }

public  int getEstadoJuego() {
    return edoJuego;
 }

public  char getLetra() {
    return letra;
 }

public  int getNroIntentos() {
    return intentRest;
 }
public  String getPalabraEnProgreso() {
    return palabraEnProgreso;
 }
public  void  setEstadoJuego(int edoJuego) {
    ClienteAhorc.edoJuego = edoJuego;}
public  void setLetra(char letra) {
    ClienteAhorc.letra = letra;
 }
public  void leerMensaje(String mensaje) {
  StringTokenizer stk = new StringTokenizer(mensaje, "#");
  while (stk.hasMoreTokens()) {
      edoJuego = Integer.valueOf(stk.nextToken());
   intentRest = Integer.valueOf(stk.nextToken());
   letra = stk.nextToken().charAt(0);
   palabraEnProgreso = stk.nextToken();
   numMensaje = Integer.valueOf(stk.nextToken());
   }
 }
  
public  void imprimirMensajeEnPantalla() {
    ClienteAhorc Ahcd = new ClienteAhorc();
 System.out.println("^^^^^^^^^^^ Ahorcado ^^^^^^^^^^^");
 imprimirAhorcado(intentRest);
 System.out.println("\nPalabra actual: " + Ahcd.getPalabraActualGuionBajo());
 System.out.println("Intentos restantes: " + intentRest);
 }
public  String getPalabraActualGuionBajo() {
    String[] a = palabraEnProgreso.split("");
 String impr = "";
 for (int i = 0; i < a.length; i++) {
     impr += a[i] + " ";}
 return impr;
 }

public  String mostrarEstado() {
    if (edoJuego == 0) {
     return "INACTIVO";}
    else {
     if (edoJuego == 1) {
  return "JUGANDO";}
 else {
     if (edoJuego == 2) {
  return "GANO";}
 else {
     if (edoJuego == 3) {
  return "PERDIO";}
 else {
     if (edoJuego == 4) {
  return "SolicJuegoNuevo";}
 else {
     return "JuegoTerminado";}}}}}}

public  void imprimirEntrada() {
    ClienteAhorc Ahcd = new ClienteAhorc();
    String a = edoJuego + "#" + intentRest + "#" + letra + "#" + palabraEnProgreso +"#" + numMensaje;
 System.out.println("Leido por el cliente: " + a + "\n" + Ahcd.mostrarEstado());}

public  void imprimirSalida() {
    ClienteAhorc Ahcd = new ClienteAhorc();
    String a = edoJuego + "#" + intentRest + "#" + letra + "#" + palabraEnProgreso +"#" + numMensaje;
 System.out.println("Enviado por el cliente: " + a + "\n" + Ahcd.mostrarEstado());}
public  void imprimirAhorcado(int intentRest) {
    System.out.println(" ________________");
 if (intentRest < 1) {
  System.out.println("|   |");
  System.out.println("|   |");
  System.out.println("|   O");
  System.out.println("|  \\|/");
  System.out.println("|   |");
  System.out.println("|  /|\\");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
  }
 else {
     if (intentRest < 2) {
  System.out.println("|   |");
  System.out.println("|   |");
  System.out.println("|   O");
  System.out.println("|  \\|/");
  System.out.println("|   |");
  System.out.println("|  /|");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
   }
 else {
      if (intentRest < 3) {
  System.out.println("|   |");
  System.out.println("|   |");
  System.out.println("|   O");
  System.out.println("|  \\|/");
  System.out.println("|   |");
  System.out.println("|   |");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
   }
 else {
      if (intentRest < 4) {
  System.out.println("|   |");
  System.out.println("|   |");
  System.out.println("|   O");
  System.out.println("|  \\|");
  System.out.println("|   |");
  System.out.println("|   |");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
   }
 else {
      if (intentRest < 5) {
  System.out.println("|  |");
  System.out.println("|  |");
  System.out.println("|  O");
  System.out.println("|  |");
  System.out.println("|  |");
  System.out.println("|  |");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
   }
 else {
      if (intentRest < 6) {
  System.out.println("|  |");
  System.out.println("|  |");
  System.out.println("|  O");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
   }
 else {
      if (intentRest < 7) {
  System.out.println("|  |");
  System.out.println("|  |");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
  System.out.println("|");
   }}}}}}}
 System.out.print("----------------------------");}
}

No hay comentarios:

Publicar un comentario