Advertisement
FacundoCruz

TP03-P07

Apr 28th, 2022
958
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.98 KB | None | 0 0
  1. package tp03Punto07;
  2.  
  3.  
  4. import java.util.Random;
  5.  
  6.  
  7. public class SOPALETRAS {
  8.    
  9.     private String [][] matrizLetras = new String [12][12];
  10.    
  11.     private int x; // posicion columna
  12.    
  13.     private int auxColumna1; // auxiliar para saber numero de columna
  14.    
  15.     private String letraAleatoria = "WQWERTYUIOPASDFGHJKLÑZXCVBNM" ;
  16.    
  17.     Random aleatorio = new Random();
  18.    
  19.     //Busca si hay lugar para la palabra en una fila aleatoria
  20.    
  21.     public int buscarLugarHorizontal(String palabra) {
  22.         int contador = 0;
  23.         int i;
  24.         x = aleatorio.nextInt(12);
  25.         for(i=0; i<12 && contador<palabra.length() ;i++) {
  26.             if(matrizLetras[x][i] == null){
  27.                 contador++;
  28.             }else {
  29.                 contador = 0;
  30.             }
  31.         }
  32.         if(contador>=palabra.length()) {
  33.             return i;
  34.         }else {
  35.             return 0;
  36.         }
  37.     }
  38.    
  39.     // Carga la palabra en la Matriiz de derecha a izquierda
  40.    
  41.     public int cargarHorizontalDerecha(String palabra) {
  42.         int poscolumnaFinal = buscarLugarHorizontal(palabra);
  43.         int posicion = 0;
  44.         if(poscolumnaFinal == 0) {
  45.             return 0;
  46.         }else {
  47.             for(int i=poscolumnaFinal-(palabra.length());i<poscolumnaFinal;i++) {
  48.                 matrizLetras[x][i] = " "+palabra.charAt(posicion);
  49.                 posicion++;
  50.             }
  51.             return poscolumnaFinal;
  52.         }
  53.     }
  54.    
  55.     // Carga la palabra en la Matriz de izquierda a derecha
  56.    
  57.     public int cargarHorizontalIzquierda(String palabra) {
  58.         int poscolumnaFinal = buscarLugarHorizontal(palabra);
  59.         int posicion = 0;
  60.         if(poscolumnaFinal == 0) {
  61.             return 0;
  62.         }else {
  63.             for(int i=poscolumnaFinal-1;i>(poscolumnaFinal-1)-(palabra.length());i--) {
  64.                 matrizLetras[x][i] = " "+palabra.charAt(posicion);
  65.                 posicion++;
  66.             }
  67.             return poscolumnaFinal;
  68.         }
  69.     }
  70.    
  71.     // Busca si hay lugar para la palabra en una columna aleatoria
  72.    
  73.     public int buscarLugarVertical(String palabra) {
  74.         int contador = 0;
  75.         int i;
  76.         x = aleatorio.nextInt(12);
  77.         for(i=0; i<12 && contador<palabra.length() ;i++) {
  78.             if(matrizLetras[i][x] == null){
  79.                 contador++;
  80.             }else {
  81.                 contador = 0;
  82.             }
  83.         }
  84.        
  85.         if(contador>=palabra.length()) {
  86.             return i;
  87.         }else {
  88.             return 0;
  89.         }
  90.     }
  91.    
  92.     // Carga la palabra en la Matriz de arriba a abajo
  93.    
  94.     public int cargarVerticalAscendente(String palabra) {
  95.         int posFilaFinal = buscarLugarVertical(palabra);
  96.         int posicion = 0;
  97.         if(posFilaFinal == 0) {
  98.             return 0;
  99.         }else {
  100.             for(int i=posFilaFinal-(palabra.length());i<posFilaFinal;i++) {
  101.                 matrizLetras[i][x] = " "+palabra.charAt(posicion);
  102.                 posicion++;
  103.             }
  104.             return posFilaFinal;
  105.         }
  106.     }
  107.    
  108.    
  109.     // Carga la palabra en la Matriz de abajo a arriba
  110.    
  111.     public int cargarVerticalDescendente(String palabra) {
  112.         int posFilaFinal = buscarLugarVertical(palabra);
  113.         int posicion = 0;
  114.         if(posFilaFinal == 0) {
  115.             return 0;
  116.         }else {
  117.             for(int i=posFilaFinal-1;i>(posFilaFinal-1)-(palabra.length());i--) {
  118.                 matrizLetras[i][x] = " "+palabra.charAt(posicion);
  119.                 posicion++;
  120.             }
  121.             return posFilaFinal;
  122.         }
  123.     }
  124.    
  125.     // Busca lugar para la palabra segun una diagonal aleatoria
  126.    
  127.     public int buscarDiagonal(String palabra) {
  128.         int contador = 0;
  129.         int i;
  130.         int j=0;
  131.        
  132.         do {
  133.             x = aleatorio.nextInt(12);
  134.         }while(x<7);
  135.            
  136.         for(i=x; i>=0 && contador<palabra.length() ;i--) {
  137.             if(matrizLetras[i][j] == null){
  138.                 contador++;
  139.                 if(contador == palabra.length()) {
  140.                     break;
  141.                 }
  142.             }else {
  143.                 contador = 0;
  144.             }
  145.             j++;
  146.             }
  147.         if(contador==palabra.length()) {
  148.             auxColumna1=j;
  149.             return i;
  150.         }else {
  151.             return 0;
  152.         }
  153.     }
  154.    
  155.     // Carga la palabra normal en la Matriz Diagonal
  156.    
  157.     public int cargarDiagonalnormal(String palabra) {
  158.         int posFila = buscarDiagonal(palabra);
  159.         int posColum = auxColumna1;
  160.         int cont = palabra.length();
  161.         if(posFila == 0) {
  162.             return 0;
  163.         }else {
  164.             for(int i= posFila; i<12 && posColum>-1 && cont>0;i++) {
  165.                 matrizLetras[i][posColum]= " "+palabra.charAt(cont-1);
  166.                 posColum--;
  167.                 cont--;
  168.             }
  169.             return 1;
  170.         }
  171.     }
  172.    
  173.     // Carga la palabra invertida en la Matriz diagonal
  174.    
  175.     public int cargarDiagonalInvertida(String palabra) {
  176.         int posFila = buscarDiagonal(palabra);
  177.         int posColum = auxColumna1;
  178.         int cont = 0;
  179.        
  180.         if(posFila == 0) {
  181.             return 0;
  182.         }else {
  183.             for(int i= posFila; i<12 && posColum>-1 && cont<palabra.length();i++) {
  184.                 matrizLetras[i][posColum]= " "+palabra.charAt(cont);
  185.                 posColum--;
  186.                 cont++;
  187.             }
  188.             return 1;
  189.         }
  190.        
  191.     }
  192.  
  193.     // Carga los casilleros vacios con letras aleatorias
  194.    
  195.     public void cargarAleatorio() {
  196.         for(int i=0;i<12;i++) {
  197.             for(int j=0;j<12;j++) {
  198.                 if(matrizLetras[i][j] == null) {
  199.                     //cuadroLetras[i][j] = " "+"x";  Para encontar mejor las palabras
  200.                     matrizLetras[i][j] = " "+letraAleatoria.charAt(aleatorio.nextInt(27));
  201.                 }
  202.             }
  203.         }
  204.        
  205.     }
  206.    
  207.     // Muestra la Matriz Completa
  208.    
  209.     public void Mostrar(){     
  210.         for(int i=0;i<12;i++) {
  211.             for(int j=0; j<12;j++) {
  212.                 System.out.print("  "+matrizLetras[i][j]);
  213.             }
  214.             System.out.println("\n");
  215.         }
  216.     }
  217.    
  218.    
  219.     public static void main(String[] args) {
  220.        
  221.         SOPALETRAS sopaDeLetras = new SOPALETRAS();
  222.        
  223.         String [] palabras = {"CAMELLO","ELEFANTE", "AGUILA","CAMALEON","AVESTRUZ","COCODRILO","ANTILOPE","SERPIENTE","BUFALO","COMADREJA"};
  224.        
  225.         int cont;
  226.        
  227.         System.out.println("         ----------SOPA DE LETRAS----------\n");
  228.        
  229.         System.out.println("Palabras a encontrar :\n");
  230.        
  231.         for(int j=0;j<10;j++) {
  232.             System.out.println((j+1)+") "+palabras[j]);
  233.         }
  234.        
  235.         System.out.println("\n");
  236.        
  237.         for(int i = 0;i<10;i++) {
  238.             do {
  239.                 cont=0;
  240.                 if(sopaDeLetras.cargarDiagonalnormal(palabras[i]) ==0) {
  241.                     if(sopaDeLetras.cargarHorizontalDerecha(palabras[i]) == 0) {
  242.                         if(sopaDeLetras.cargarVerticalAscendente(palabras[i]) == 0) {
  243.                             if(sopaDeLetras.cargarHorizontalIzquierda(palabras[i]) == 0) {
  244.                                 if(sopaDeLetras.cargarVerticalDescendente(palabras[i]) == 0) {
  245.                                     if(sopaDeLetras.cargarDiagonalInvertida(palabras[i])==0) {
  246.                                     }else {
  247.                                         cont=1;
  248.                                     }
  249.                                 }
  250.                             }
  251.                         }
  252.                     }
  253.                 }
  254.                
  255.             }while(cont==1);
  256.         }
  257.            
  258.         sopaDeLetras.cargarAleatorio();
  259.         sopaDeLetras.Mostrar();
  260.     }
  261. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement