Advertisement
chete

JuegoPunto

May 25th, 2014
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.28 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.io.InputStreamReader;
  3. import java.util.Arrays;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.io.BufferedReader;
  7. public class JavaPunt {
  8.     public static void main(String[] args){
  9.         ArrayList<ArrayList<String>> listaPartidas= leerEntrada();
  10.         for( ArrayList<String> DatosPartida: listaPartidas){
  11.             EjecutarPartida(DatosPartida);
  12.         }
  13.     }
  14.  
  15.     private static ArrayList<ArrayList<String>> leerEntrada() {
  16.         // TODO Auto-generated method stub
  17.         ArrayList<ArrayList<String>> listaPartidas = new ArrayList<ArrayList<String>>();
  18.         ArrayList<String> DatosPartida = new ArrayList<String>();
  19.        
  20.         try{
  21.             BufferedReader lee = new BufferedReader(new InputStreamReader(System.in));
  22.            
  23.             while(true){
  24.                 String cadena = lee.readLine();
  25.                 if(cadena.equalsIgnoreCase("0")){
  26.                    
  27.                     if(DatosPartida.size() > 0){
  28.                        
  29.                         listaPartidas.add(DatosPartida);
  30.                     }
  31.                     break;
  32.                 } else {
  33.                 if(cadena.length() == 1 || cadena.length() == 2){
  34.                     if (DatosPartida.size() > 0){
  35.                         listaPartidas.add((ArrayList<String>)DatosPartida.clone());
  36.                         DatosPartida.clear();
  37.                     }
  38.                     DatosPartida.add(cadena);
  39.                     } else {
  40.                         DatosPartida.add(cadena);
  41.                     }
  42.                 }
  43.             }
  44.         }
  45.            
  46.         catch(IOException e){
  47.             System.err.println("Error: " + e.getMessage());
  48.         }
  49.         return listaPartidas;
  50.     }
  51.  
  52.     private static void EjecutarPartida(ArrayList<String> datosPartida) {
  53.         String tablero[][] = null;
  54.         ArrayList<String[][]> listaTablero = new ArrayList<String[][]> ();
  55.         int NumeroMovimiento = 1;
  56.         int CeroTablero = 0;
  57.        
  58.        
  59.         for (String data: datosPartida){
  60.             if(data.length()==1 || data.length()==2 ){
  61.                 CeroTablero = Integer.valueOf(data);
  62.                 if (CeroTablero>50||CeroTablero<2){
  63.                     System.out.println("tamaño del tablero erroneo, el tablero tiene que se > que 1 y < de 51");
  64.                     System.exit(0);
  65.                     } else {
  66.                         tablero = new String [CeroTablero][CeroTablero];
  67.                         String[][] tableroCopia = CopiarTablero(tablero);
  68.                         listaTablero.add(tableroCopia);
  69.                 }
  70.             } else {
  71.                 String[] arrayDatos = data.split(" ");
  72.                
  73.                 int fila = Integer.valueOf(arrayDatos[0]);
  74.                 int columna = Integer.valueOf(arrayDatos[1]);
  75.                
  76.                 if(arrayDatos[2].equalsIgnoreCase("-")){
  77.                     tablero[fila - 1][columna - 1] = null;
  78.                 } else {
  79.                     tablero[fila - 1][columna - 1] = arrayDatos[2];
  80.                 }
  81.                 boolean reppattern = tableroExist(tablero, listaTablero);
  82.                 if(reppattern == true){
  83.                     int numPlayerAct;
  84.                     int numPlayerWin;
  85.  
  86.                     if (NumeroMovimiento % 2 == 0){
  87.                         numPlayerAct = 2;
  88.                         numPlayerWin = 1;
  89.                     }else{
  90.                         numPlayerAct = 1;
  91.                         numPlayerWin = 2;
  92.                     }
  93.                     System.out.println("El jugador " + numPlayerWin + " ganaría en el movimiento " + NumeroMovimiento);
  94.                     return;
  95.                 } else{
  96.                     String[][] tableroCopia = CopiarTablero(tablero);
  97.                    
  98.                     listaTablero.add(tableroCopia);
  99.                    
  100.                     NumeroMovimiento++;
  101.                 }
  102.             }
  103.         }
  104.         if(2 * CeroTablero == NumeroMovimiento - 1){
  105.             System.out.println("Empate");
  106.         } else{
  107.             System.out.println("Error");
  108.         }
  109.     }
  110.  
  111.     private static boolean tableroExist(String[][] tablero,
  112.             ArrayList<String[][]> listaTablero) {
  113.         boolean result = false;
  114.         for (String[][] tableroExist: listaTablero){
  115.             result = Arrays.deepEquals(tableroExist, tablero);
  116.             if (result==true){
  117.                 return true;
  118.             }
  119.             tableroExist = girar(tableroExist);
  120.             result = Arrays.deepEquals(tableroExist, tablero);
  121.             if (result==true){
  122.                 return true;
  123.             }
  124.             tableroExist = girar(tableroExist);
  125.             result = Arrays.deepEquals(tableroExist, tablero);
  126.             if (result==true){
  127.                 return true;
  128.             }
  129.         }
  130.         return false;
  131.     }
  132.    
  133.  
  134.     private static String[][] girar(String[][] matriz) {
  135.         String[][] MatrizRotada = new String[matriz.length][matriz[0].length];
  136.         int CeroMatriz = matriz.length;
  137.         for (int i = 0; i < CeroMatriz; ++i){
  138.             for (int j = 0; j < CeroMatriz; ++j){
  139.                 MatrizRotada[i][j] = matriz[(CeroMatriz - 1) - j][i];
  140.             }
  141.         }
  142.         return MatrizRotada;
  143.     }
  144.  
  145.     private static String[][] CopiarTablero(String[][] tablero) {
  146.         String[][] tableroCopia = new String[tablero.length][tablero.length];
  147.         for(int h=0;h<tablero.length;h++){
  148.             for(int z=0;z<tablero.length;z++){
  149.                 tableroCopia[h][z] = tablero[h][z];
  150.             }
  151.         }
  152.         return tableroCopia;
  153.     }
  154.    
  155.    
  156.  
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement