Package prop.hex.domini.controladors.drivers

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

package prop.hex.domini.controladors.drivers;

import prop.cluster.domini.models.estats.EstatCasella;
import prop.hex.domini.models.Casella;
import prop.hex.domini.models.TaulerHex;

import java.util.ArrayList;
import java.util.List;

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

/**
* Proves dels mètodes de la classe TaulerHex i, per tant, de Tauler.
*
* @author Isaac Sánchez Barrera (Grup 7.3, Hex)
*/
public final class TaulerHexDrvr
{

  /**
   * Llistat de taulers
   */
  private static ArrayList<TaulerHex> taulers = new ArrayList<TaulerHex>();

  /**
   * Conté l'índex del tauler actual
   */
  private static int actual;

  /**
   * Fa una nova instància de TaulerHex amb la mida especificada. Canvia el tauler actual al nou.
   */
  public static void testInstanciaTauler()
  {
    int mida = llegeixEnter( "Introdueix la mida del tauler (més gran que 0):" );

    taulers.add( new TaulerHex( mida ) );
    actual = taulers.size() - 1;
    System.out.println( "[OK]\tS'ha instanciat el tauler amb èxit.\n\tEl tauler actual és: " + actual + ".\n\tLes" +
                        " seves característiques són:\n" + taulers.get( actual ).toString() );
  }

  /**
   * Fa una nova instància de TaulerHex copiant un tauler existent. Canvia el tauler actual al nou.
   */
  public static void testCopiaTauler()
  {
    if ( taulers.size() > 0 )
    {
      System.out.println( taulers.size() );
      int num = llegeixEnter(
          "Escriu el número del tauler per copiar (entre 0 i " + Integer.toString( taulers.size() - 1 ) +
          "):" );

      taulers.add( new TaulerHex( taulers.get( num ) ) );
      actual = taulers.size() - 1;
      System.out.println( "[OK]\tS'ha copiat el tauler amb èxit.\n\tEl tauler actual és: " + actual + ".\n\tLes" +
                          " seves característiques són:\n" + taulers.get( actual ).toString() );
    }
    else
    {
      System.out.println( "[KO]\tNo existeix cap tauler!" );
    }
  }

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

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

  /**
   * Prova el funcionament de la funció de moure una fitxa al tauler.
   */
  public static void testMouFitxa()
  {
    if ( taulers.size() > 0 )
    {
      String jugador = llegeixParaula( "Escull un jugador (A, B, cap):" );
      EstatCasella fitxa;
      if ( jugador.equalsIgnoreCase( "A" ) )
      {
        fitxa = EstatCasella.JUGADOR_A;
      }
      else if ( jugador.equalsIgnoreCase( "B" ) )
      {
        fitxa = EstatCasella.JUGADOR_B;
      }
      else
      {
        fitxa = EstatCasella.BUIDA;
      }

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

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

      try
      {
        taulers.get( actual ).mouFitxa( fitxa, fila, columna );
        System.out.println( "[OK]\tLa fitxa s'ha mogut correctament." );
      }
      catch ( IndexOutOfBoundsException excepcio )
      {
        System.out.println( "[KO]\tNo s'ha pogut moure la fitxa: " + excepcio.getMessage() );
      }
      catch ( IllegalArgumentException excepcio )
      {
        System.out.println( "[KO]\tNo s'ha pogut moure la fitxa: " + excepcio.getMessage() );
      }

      System.out.println( "\tEl tauler actual és: " + actual + ".\n\t" + "Les seves característiques són:\n" +
                          taulers.get( actual ).toString() );
    }
    else
    {
      System.out.println( "[KO]\tNo existeix cap tauler!" );
    }
  }

  /**
   * Comprova el funcionament de la funció de treure una fitxa del tauler.
   */
  public static void testTreuFitxa()
  {
    if ( taulers.size() > 0 )
    {
      int fila = llegeixEnter( "Escriu la fila de la casella:" );

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

      try
      {
        taulers.get( actual ).treuFitxa( fila, columna );
        System.out.println( "[OK]\tLa fitxa s'ha tret correctament." );
      }
      catch ( IndexOutOfBoundsException excepcio )
      {
        System.out.println( "[KO]\tNo s'ha pogut treure la fitxa: " + excepcio.getMessage() );
      }
      catch ( IllegalArgumentException excepcio )
      {
        System.out.println( "[KO]\tNo s'ha pogut treure la fitxa: " + excepcio.getMessage() );
      }

      System.out.println( "\tEl tauler actual és: " + actual + ".\n\t" + "Les seves característiques són:\n" +
                          taulers.get( actual ).toString() );
    }
    else
    {
      System.out.println( "[KO]\tNo existeix cap tauler!" );
    }
  }

  /**
   * Comprova el funcionament de la funció d'intercanviar una fitxa del tauler.
   */
  public static void testIntercanviaFitxa()
  {
    if ( taulers.size() > 0 )
    {
      int fila = llegeixEnter( "Escriu la fila de la casella:" );

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

      try
      {
        taulers.get( actual ).intercanviaFitxa( fila, columna );
        System.out.println( "[OK]\tLa fitxa s'ha intercanviat." );
      }
      catch ( IndexOutOfBoundsException excepcio )
      {
        System.out.println( "[KO]\tNo s'ha pogut intercanviar la fitxa: " + excepcio.getMessage() );
      }
      catch ( IllegalArgumentException excepcio )
      {
        System.out.println( "[KO]\tNo s'ha pogut intercanviar la fitxa: " + excepcio.getMessage() );
      }

      System.out.println( "\tEl tauler actual és: " + actual + ".\n\t" + "Les seves característiques són:\n" +
                          taulers.get( actual ).toString() );
    }
    else
    {
      System.out.println( "[KO]\tNo existeix cap tauler!" );
    }
  }

  /**
   * Comprova el funcionament de la funció d'obtenir els veïns d'una casella.
   */
  public static void testGetVeins()
  {
    if ( taulers.size() > 0 )
    {
      int fila = llegeixEnter( "Escriu la fila de la casella:" );

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

      try
      {
        List<Casella> veins = taulers.get( actual ).getVeins( fila, columna );
        System.out.println(
            "[OK]\tLlistat de veïns de la casella (" + fila + "," + columna + "): " + veins.toString() );
      }
      catch ( IndexOutOfBoundsException excepcio )
      {
        System.out.println( "[KO]\tNo s'han pogut obtenir els veïns: " + excepcio.getMessage() );
      }

      System.out.println( "\tEl tauler actual és: " + actual + ".\n\t" + "Les seves característiques són:\n" +
                          taulers.get( actual ).toString() );
    }
    else
    {
      System.out.println( "[KO]\tNo existeix cap tauler!" );
    }
  }
}
TOP

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

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.