Package prop.hex.domini.controladors.drivers

Source Code of prop.hex.domini.controladors.drivers.JugarDrvr

package prop.hex.domini.controladors.drivers;

import prop.hex.domini.controladors.PartidaCtrl;
import prop.hex.domini.controladors.UsuariCtrl;
import prop.hex.domini.models.UsuariHex;
import prop.hex.domini.models.enums.TipusJugadors;
import prop.hex.presentacio.drivers.VisualitzadorPartida;

import javax.swing.*;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Vector;

/**
* Driver que permet jugar una partida de prova escollint els dos jugadors.
*
* @author Marc Junyent Martín (Grup 7.3, Hex)
*/
public final class JugarDrvr
{

  /**
   * Guarda el primer jugador
   */
  private static UsuariHex usuari_a;
  /**
   * Guarda el segón jugador
   */
  private static UsuariHex usuari_b;
  /**
   * Vector que guarda els tipus de jugadors
   */
  private static Vector<TipusJugadors> tipus_jugadors = TipusJugadors.obteLlistatMaquines();

  /**
   * Demana un jugador d'intel·ligència artificial a l'usuari
   *
   * @param missatge Missatge que es vol mostrar per a l'usuari
   * @return El tipus de jugador que escull l'usuari
   */
  private static TipusJugadors demanaTipusJugadorIA( String missatge )
  {
    System.out.println( "Jugadors d'intel·ligència artificial:" );

    int i = 1;
    for ( TipusJugadors tipus_jugador : tipus_jugadors )
    {
      System.out.println( i + ".- " + tipus_jugador.getNomUsuari() );
      i++;
    }

    return tipus_jugadors.get( UtilsDrvr.llegeixEnter( missatge ) - 1 );
  }

  /**
   * Obté un usuari amb les dades indicades pels paràmetres
   *
   * @param nom           Nom de l'usuari
   * @param tipus_jugador Tipus de
   * @return L'usuari
   * @throws FileNotFoundException
   * @throws IOException
   * @throws ClassNotFoundException
   * @throws NullPointerException
   */
  private static UsuariHex agafaUsuari( String nom, TipusJugadors tipus_jugador )
      throws FileNotFoundException, IOException, ClassNotFoundException, NullPointerException
  {
    try
    {
      UsuariCtrl.getInstancia().creaUsuari( nom, "contrasenya", tipus_jugador );
      return UsuariCtrl.getInstancia().carregaUsuari( nom, "contrasenya", tipus_jugador );
    }
    catch ( Exception e )
    {
      return UsuariCtrl.getInstancia().carregaUsuari( nom, "contrasenya", tipus_jugador );
    }
  }

  /**
   * Crea la instància de la partida obre la seva visualització.
   */
  private static void creaIVisualitzaPartida()
  {
    try
    {
      UsuariCtrl.getInstancia().entraConvidat();
      PartidaCtrl.getInstancia().preInicialitzaUsuariPartida( 0, usuari_a.getTipusJugador(), usuari_a.getNom(),
          usuari_a.getContrasenya() );
      PartidaCtrl.getInstancia().preInicialitzaUsuariPartida( 1, usuari_b.getTipusJugador(), usuari_b.getNom(),
          usuari_b.getContrasenya() );
      PartidaCtrl.getInstancia().inicialitzaPartida( 7, "Partida de Prova", false );
      instanciaFinestra();
    }
    catch ( Exception e )
    {
      System.out.println( "Excepció al inicialitzar la partida: " + e.getMessage() );
      e.printStackTrace();
    }
  }

  /**
   * Crea 2 usuaris, carrega una partida amb ells i instancia una finestra amb VisualitzadorPartida.
   * Permet jugar una partida IA vs Huma.
   *
   * @throws FileNotFoundException  Si el fitxer no s'ha generat i no s'han pogut escriure les dades.
   * @throws IOException            IOException Si ha succeït un error d'entrada/sortida inesperat.
   * @throws ClassNotFoundException Si hi ha un problema de classes quan es carrega l'usuari.
   * @throws NullPointerException   Es dona si el fitxer està buit.
   */
  public static void IAVsHuma()
      throws FileNotFoundException, IOException, ClassNotFoundException, NullPointerException
  {
    TipusJugadors tipus_IA = demanaTipusJugadorIA( "Escriu el número del tipus d'intel·ligència contrincant" );
    usuari_a = agafaUsuari( tipus_IA.getNomUsuari(), tipus_IA );
    usuari_b = agafaUsuari( "Huma", TipusJugadors.JUGADOR );

    creaIVisualitzaPartida();
  }

  /**
   * Crea 2 usuaris, carrega una partida amb ells i instancia una finestra amb VisualitzadorPartida.
   * Permet jugar una partida Huma vs IA.
   *
   * @throws FileNotFoundException  Si el fitxer no s'ha generat i no s'han pogut escriure les dades.
   * @throws IOException            IOException Si ha succeït un error d'entrada/sortida inesperat.
   * @throws ClassNotFoundException Si hi ha un problema de classes quan es carrega l'usuari.
   * @throws NullPointerException   Es dona si el fitxer està buit.
   */
  public static void HumaVsIA()
      throws FileNotFoundException, IOException, ClassNotFoundException, NullPointerException
  {
    TipusJugadors tipus_IA = demanaTipusJugadorIA( "Escriu el número del tipus d'intel·ligència contrincant" );
    usuari_a = agafaUsuari( "Huma", TipusJugadors.JUGADOR );
    usuari_b = agafaUsuari( tipus_IA.getNomUsuari(), tipus_IA );

    creaIVisualitzaPartida();
  }

  /**
   * Crea 2 usuaris, carrega una partida amb ells i instancia una finestra amb VisualitzadorPartida.
   * Permet jugar una partida Huma vs Huma.
   *
   * @throws FileNotFoundException  Si el fitxer no s'ha generat i no s'han pogut escriure les dades.
   * @throws IOException            IOException Si ha succeït un error d'entrada/sortida inesperat.
   * @throws ClassNotFoundException Si hi ha un problema de classes quan es carrega l'usuari.
   * @throws NullPointerException   Es dona si el fitxer està buit.
   */
  public static void HumaVsHuma()
      throws FileNotFoundException, IOException, ClassNotFoundException, NullPointerException
  {
    usuari_a = agafaUsuari( "Huma 1", TipusJugadors.JUGADOR );
    usuari_b = agafaUsuari( "Huma 2", TipusJugadors.JUGADOR );

    creaIVisualitzaPartida();
  }

  /**
   * Crea 2 usuaris, carrega una partida amb ells i instancia una finestra amb VisualitzadorPartida.
   * Permet jugar una partida IA vs IA.
   *
   * @throws FileNotFoundException  Si el fitxer no s'ha generat i no s'han pogut escriure les dades.
   * @throws IOException            IOException Si ha succeït un error d'entrada/sortida inesperat.
   * @throws ClassNotFoundException Si hi ha un problema de classes quan es carrega l'usuari.
   * @throws NullPointerException   Es dona si el fitxer està buit.
   */
  public static void IAVsIA() throws FileNotFoundException, IOException, ClassNotFoundException, NullPointerException
  {
    TipusJugadors tipus_IA_A = demanaTipusJugadorIA( "Escriu el número del tipus d'intel·ligència principal" );
    TipusJugadors tipus_IA_B = demanaTipusJugadorIA( "Escriu el número del tipus d'intel·ligència contrincant" );
    usuari_a = agafaUsuari( tipus_IA_A.getNomUsuari(), tipus_IA_A );
    usuari_b = agafaUsuari( tipus_IA_B.getNomUsuari(), tipus_IA_B );

    creaIVisualitzaPartida();
  }

  /**
   * Crea un JFrame i obre la finestra utilitzant com a contingut VisualitzadorPartida.
   */
  private static void instanciaFinestra()
  {
    JFrame f = new JFrame( "Visor partida" );
    f.add( new VisualitzadorPartida() );
    f.pack();
    f.setVisible( true );
  }
}
TOP

Related Classes of prop.hex.domini.controladors.drivers.JugarDrvr

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.