Advertisement
LEANDRONIEVA

sopadeletras

Sep 2nd, 2023
889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.88 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3. public class Sopa_de_letras {
  4.     private static Random rndm = new Random();
  5.  
  6.     public static void main(String[] args) {
  7.         // TODO Auto-generated method stub
  8.        
  9.         String[] palabras = {"CAMELLO", "ELEFANTE", "AGUILA", "CAMALEON", "AVESTRUZ", "COCODRILO", "ANTILOPE", "SERPIENTE", "BUFALO", "COMADREJA"};
  10.         char[][] tablero = generarTablero(12,12);
  11.        
  12.         colocarPalabras(tablero, palabras);
  13.         llenarEspaciosEnBlanco(tablero);
  14.         imprimirTablero(tablero);
  15.     }
  16.     private static char[][] generarTablero(int filas, int columnas) {
  17.         char[][] tablero = new char[filas][columnas];
  18.         for (int i = 0; i < filas; i++) {
  19.             for (int j = 0; j < columnas; j++) {
  20.                 tablero[i][j] = ' '; // Inicializar todo el tablero con espacios en blanco
  21.             }
  22.         }
  23.         return tablero;
  24.     }
  25.    
  26.     private static void colocarPalabras(char[][] tablero, String[] palabras) {
  27.        
  28.         for (String palabra : palabras) {
  29.             boolean colocada = false;
  30.  
  31.             while (!colocada) {
  32.                 int fila = rndm.nextInt(tablero.length);
  33.                 int columna = rndm.nextInt(tablero[0].length);
  34.                 boolean horizontal = rndm.nextBoolean();
  35.                 boolean diagonal = rndm.nextBoolean();
  36.  
  37.                 if (validarPalabra(tablero, palabra, fila, columna, horizontal, diagonal)) {
  38.                     colocarPalabra(tablero, palabra, fila, columna, horizontal, diagonal);
  39.                     colocada = true;
  40.                 }
  41.             }
  42.         }
  43.     }
  44.    
  45.     private static boolean validarPalabra(char[][] tablero, String palabra, int fila, int columna, boolean horizontal, boolean diagonal) {
  46.        
  47.         if (horizontal && columna + palabra.length() <= tablero[0].length) {
  48.             for (int i = 0; i < palabra.length(); i++) {
  49.                 if (tablero[fila][columna + i] != ' ' && palabra.charAt(i)!=tablero[fila][columna + i]) {
  50.                     return false;
  51.                 }
  52.             }
  53.             return true;
  54.         } else if (!horizontal && !diagonal && fila + palabra.length() <= tablero.length) {
  55.             for (int i = 0; i < palabra.length(); i++) {
  56.                 if (tablero[fila + i][columna] != ' ' && palabra.charAt(i)!=tablero[fila + i][columna]) {
  57.                     return false;
  58.                 }
  59.             }
  60.             return true;
  61.         } else if(diagonal && columna + palabra.length() <= tablero[0].length && fila + palabra.length() <= tablero.length) {
  62.             for (int i = 0; i < palabra.length(); i++) {
  63.                 if (tablero[fila + i][columna + i] != ' ' && palabra.charAt(i)!=tablero[fila + i][columna + i]) {
  64.                     return false;
  65.                 }
  66.             }
  67.             return true;
  68.         }
  69.         return false;
  70.     }
  71.    
  72.     private static void colocarPalabra(char[][] tablero, String palabra, int fila, int columna, boolean horizontal, boolean diagonal) {
  73.        
  74.         if (horizontal) {
  75.             for (int i = 0; i < palabra.length(); i++) {
  76.                 tablero[fila][columna + i] = palabra.charAt(i);
  77.             }
  78.         } else if (!horizontal && !diagonal){
  79.             for (int i = 0; i < palabra.length(); i++) {
  80.                 tablero[fila + i][columna] = palabra.charAt(i);
  81.             }
  82.         } else if (diagonal) {
  83.             for (int i = 0; i < palabra.length(); i++) {
  84.                 tablero[fila + i][columna + i] = palabra.charAt(i);
  85.             }
  86.         }
  87.     }
  88.    
  89.     private static void llenarEspaciosEnBlanco(char[][] tablero) {
  90.         Random rand = new Random();
  91.         String letras = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  92.  
  93.         for (int i = 0; i < tablero.length; i++) {
  94.             for (int j = 0; j < tablero[i].length; j++) {
  95.                 if (tablero[i][j] == ' ') {
  96.                     int index = rand.nextInt(letras.length());
  97.                     tablero[i][j] = letras.charAt(index);
  98.                 }
  99.             }
  100.         }
  101.     }
  102.    
  103.     private static void imprimirTablero(char[][] tablero) {
  104.         for (int i = 0; i < tablero.length; i++) {
  105.             for (int j = 0; j < tablero[i].length; j++) {
  106.                 System.out.print(tablero[i][j] + " ");
  107.             }
  108.             System.out.println();
  109.         }
  110.     }
  111. }
  112.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement