Package prop.hex.domini.controladors.drivers

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

package prop.hex.domini.controladors.drivers;

import prop.cluster.domini.models.estats.EstatCasella;
import prop.cluster.domini.models.estats.EstatPartida;
import prop.hex.domini.models.PartidaHex;

import java.util.ArrayList;

import static prop.hex.domini.controladors.drivers.UtilsDrvr.llegeixEnter;

/**
* Proves dels mètodes de la classe PartidaHex.
*
* @author Guillermo Girona San Miguel (Grup 7.3, Hex)
*/
public final class PartidaHexDrvr
{

  /**
   * Llistat de partides
   */
  private static ArrayList<PartidaHex> partides = new ArrayList<PartidaHex>();

  /**
   * Conté l'índex de la partida actual
   */
  private static int actual;

  /**
   * Fa una nova instància de PartidaHex amb la mida i el nom especificats. Canvia la partida actual a la nova.
   */
//  public static void testInstanciaPartida()
//  {
//    int mida = llegeixEnter( "Introdueix la mida del tauler a utilitzar en la partida:" );
//    String nom = llegeixParaula( "Introdueix el nom de la partida:" );
//    partides.add( new PartidaHex( new UsuariHex( "Nom_jugador_a", "Contrasenya_jugador_a", TipusJugadors.JUGADOR ),
//        new UsuariHex( "Nom_jugador_b", "Contrasenya_jugador_b", TipusJugadors.JUGADOR ), new TaulerHex( mida ), nom ) );
//    actual = partides.size() - 1;
//    System.out.println( "[OK]\tS'ha instanciat la partida amb èxit.\n\tLa partida actual és: " + actual + "" +
//                        ".\n\tLes seves característiques són:\n" + partides.get( actual ).toString() );
//  }

  /**
   * Canvia el valor de l'índex de la partida a un altre
   */
  public static void canviaPartida()
  {
    if ( partides.size() > 0 )
    {
      System.out.println(
          "Escriu el número de la partida que vols (entre 0 i " + Integer.toString( partides.size() - 1 ) +
          "):" );
      int num = llegeixEnter();

      if ( num < 0 || num >= partides.size() )
      {
        System.out.println( "[KO]\tLa partida seleccionada no existeix. No es canvia de partida.\n\tLa " +
                            "partida actual és: " + actual );
      }
      else
      {
        actual = num;
        System.out.println( "[OK]\tS'ha canviat de partida amb èxit.\n\tLa partida actual és: " + actual +
                            ".\n\tLes seves característiques són:\n" + partides.get( actual ).toString() );
      }
    }
    else
    {
      System.out.println( "[KO]\tNo existeix cap partida!" );
    }
  }

  /**
   * Seleciona un tauler per a la partida d'entre tres taulers predefinits.
   */
  public static void seleccionaTauler()
  {
    if ( partides.size() > 0 )
    {
      System.out.println( "Escriu el número de tauler que vols (entre 0 i 2):" );

      int num = llegeixEnter();

      if ( num < 0 || num > 2 )
      {
        System.out.println(
            "[KO]\tEl tauler seleccionat no existeix. No es modifica el tauler de la " + "partida." );
      }
      else
      {
        switch ( num )
        {
          case 0:
            int mida = partides.get( actual ).getTauler().getMida();
            for ( int columna = 0; columna < mida; columna++ )
            {
              for ( int fila = 0; fila < mida; fila++ )
              {
                if ( partides.get( actual ).getTauler().getEstatCasella( fila, columna ) !=
                     EstatCasella.BUIDA )
                {
                  partides.get( actual ).getTauler().treuFitxa( fila, columna );
                }
              }
            }
            break;
          case 1:
            mida = partides.get( actual ).getTauler().getMida();
            for ( int columna = 0; columna < mida; columna++ )
            {
              for ( int fila = 0; fila < mida; fila++ )
              {
                if ( partides.get( actual ).getTauler().getEstatCasella( fila, columna ) !=
                     EstatCasella.BUIDA )
                {
                  partides.get( actual ).getTauler().treuFitxa( fila, columna );
                }
              }
            }
            for ( int columna = 0; columna < mida; columna++ )
            {
              for ( int fila = 0; fila < mida; fila++ )
              {
                if ( fila == 0 )
                {
                  partides.get( actual ).getTauler()
                      .mouFitxa( EstatCasella.JUGADOR_A, fila, columna );
                }
                else
                {
                  if ( columna == 0 )
                  {
                    partides.get( actual ).getTauler()
                        .mouFitxa( EstatCasella.JUGADOR_B, fila, columna );
                  }
                }
              }
            }
            break;
          case 2:
            mida = partides.get( actual ).getTauler().getMida();
            for ( int columna = 0; columna < mida; columna++ )
            {
              for ( int fila = 0; fila < mida; fila++ )
              {
                if ( partides.get( actual ).getTauler().getEstatCasella( fila, columna ) !=
                     EstatCasella.BUIDA )
                {
                  partides.get( actual ).getTauler().treuFitxa( fila, columna );
                }
              }
            }
            for ( int columna = 0; columna < mida; columna++ )
            {
              for ( int fila = 0; fila < mida; fila++ )
              {
                if ( columna == 0 )
                {
                  partides.get( actual ).getTauler()
                      .mouFitxa( EstatCasella.JUGADOR_B, fila, columna );
                }
                else
                {
                  if ( fila == 0 )
                  {
                    partides.get( actual ).getTauler()
                        .mouFitxa( EstatCasella.JUGADOR_A, fila, columna );
                  }
                }
              }
            }
            break;
        }
        System.out.println( "[OK]\tS'ha modificat correctament el tauler de la partida. El tauler actual " +
                            "és:\n" + ( ( partides.get( actual ).getTauler() ) ).toString() );
      }
      ;
    }
    else
    {
      System.out.println( "[KO]\tNo existeix cap partida!" );
    }
  }

  /**
   * Comprova l'estat de la partida actual.
   */
  public static void testEstatPartida()
  {
    if ( partides.size() > 0 )
    {
      int fila = llegeixEnter( "Escriu la fila de la casella:" );

      int columna = llegeixEnter( "Escriu la columna de la casella:" );

      try
      {
        EstatPartida estat_partida = partides.get( actual ).comprovaEstatPartida( fila, columna );
        System.out.println( "[OK]\tS'ha calculat correctament l'estat de la partida, " +
                            "que és: " + estat_partida + "." );
      }
      catch ( IndexOutOfBoundsException excepcio )
      {
        System.out.println( "[KO]\tNo s'ha pogut calcular l'estat de la partida: " + excepcio.getMessage() );
      }
    }
    else
    {
      System.out.println( "[KO]\tNo existeix cap partida!" );
    }
  }

  /**
   * Comprova el funcionament dels getters i els setters.
   */
  public static void testGettersSetters()
  {
    if ( partides.size() > 0 )
    {
      System.out.println(
          "L'identificador únic de la partida és: " + partides.get( actual ).getIdentificadorUnic() +
          "\nEl nombre màxim de pistes és: " + partides.get( actual ).getMaxNumPistes() + "." );
      System.out.println( "Els caràcters permesos als noms de les partides són els que compleixen l'expressió " +
                          partides.get( actual ).getCaractersPermesos() );
      System.out.println( "La combinació de colores de la partida és " +
                          partides.get( actual ).getCombinacioColors().toString() + " i el mode d'inici és " +
                          partides.get( actual ).getModeInici().toString() + "." );
      int jugador = llegeixEnter( "Escriu el número del jugador al que vols modificar els paràmetres:" );
      int pistes = llegeixEnter( "Escriu la quantitat de pistes que vols donar al jugador:" );
      try
      {
        partides.get( actual ).incrementaPistesUsades( jugador, pistes );
        System.out.println( "[OK]\tS'han modificat correctament les pistes usades del jugador amb " +
                            "identificador únic " + jugador + "\nEl nombre actual de pistes és " +
                            partides.get( actual ).getPistesUsades( jugador ) + "." );
        int quantitat = llegeixEnter( "Escriu la quantitat de pistes que vols afegir:" );
        try
        {
          partides.get( actual ).incrementaPistesUsades( jugador, quantitat );
          System.out.println( "[OK]\tS'han incrementat correctament les pistes usades del jugador amb " +
                              "identificador únic " + jugador + ", afegint " + quantitat +
                              " pistes.\nEl nombre " +
                              "actual de pistes és " + partides.get( actual ).getPistesUsades( jugador ) +
                              "." );
          int temps = llegeixEnter( "Escriu el temps de joc que vols assignar a l'usuari:" );
          try
          {
            partides.get( actual ).setTempsDeJoc( jugador, temps );
            System.out.println( "[OK]\tS'ha modificat correctament el temps de joc del jugador amb" +
                                "identificador únic " + jugador + "." );
            int quantitat_temps = llegeixEnter( "Escriu el temps de joc que vols afegir a l'usuari:" );
            try
            {
              partides.get( actual ).incrementaTempsDeJoc( jugador, quantitat_temps );
              System.out.println( "[OK]\tS'ha incrementat correctament el temps de joc del jugador " +
                                  "amb identificador únic " + jugador + ", " +
                                  "afegint " + quantitat_temps + ".\nEl temps de joc actual és " +
                                  partides.get( actual ).getTempsDeJoc( jugador ) + "." );
            }
            catch ( IllegalArgumentException excepcio )
            {
              System.out.println( "[KO]\tNo s'ha pogut incrementar correctament el temps de joc del" +
                                  "jugador amb identificador únic " + jugador + ": " +
                                  excepcio.getMessage() );
            }
          }
          catch ( IllegalArgumentException excepcio )
          {
            System.out.println( "[KO]\tNo s'ha pogut modificar correctament el temps de joc del jugador" +
                                " amb identificador únic " + jugador + ": " + excepcio.getMessage() );
          }
        }
        catch ( IllegalArgumentException excepcio )
        {
          System.out.println( "[KO]\tNo s'han pogut incrementar correctament les pistes del jugador amb " +
                              "identificador únic " + jugador + ": " + excepcio.getMessage() );
        }
        System.out.println( "\tEl nombre de pistes actuals del jugador amb identificador únic " + jugador +
                            " és " + partides.get( actual ).getPistesUsades( jugador ) +
                            " i el temps de joc és " +
                            partides.get( actual ).getTempsDeJoc( jugador ) );
      }
      catch ( IllegalArgumentException excepcio )
      {
        System.out.println( "[KO]\tNo s'han pogut incrementar correctament les pistes del jugador amb " +
                            "identificador únic " + jugador + ": " + excepcio.getMessage() );
      }
    }
    else
    {
      System.out.println( "[KO]\tNo existeix cap partida!" );
    }
  }
}
TOP

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

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.