Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Random;
- public class Sopa_de_letras {
- private static Random rndm = new Random();
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String[] palabras = {"CAMELLO", "ELEFANTE", "AGUILA", "CAMALEON", "AVESTRUZ", "COCODRILO", "ANTILOPE", "SERPIENTE", "BUFALO", "COMADREJA"};
- char[][] tablero = generarTablero(12,12);
- colocarPalabras(tablero, palabras);
- llenarEspaciosEnBlanco(tablero);
- imprimirTablero(tablero);
- }
- private static char[][] generarTablero(int filas, int columnas) {
- char[][] tablero = new char[filas][columnas];
- for (int i = 0; i < filas; i++) {
- for (int j = 0; j < columnas; j++) {
- tablero[i][j] = ' '; // Inicializar todo el tablero con espacios en blanco
- }
- }
- return tablero;
- }
- private static void colocarPalabras(char[][] tablero, String[] palabras) {
- for (String palabra : palabras) {
- boolean colocada = false;
- while (!colocada) {
- int fila = rndm.nextInt(tablero.length);
- int columna = rndm.nextInt(tablero[0].length);
- boolean horizontal = rndm.nextBoolean();
- boolean diagonal = rndm.nextBoolean();
- if (validarPalabra(tablero, palabra, fila, columna, horizontal, diagonal)) {
- colocarPalabra(tablero, palabra, fila, columna, horizontal, diagonal);
- colocada = true;
- }
- }
- }
- }
- private static boolean validarPalabra(char[][] tablero, String palabra, int fila, int columna, boolean horizontal, boolean diagonal) {
- if (horizontal && columna + palabra.length() <= tablero[0].length) {
- for (int i = 0; i < palabra.length(); i++) {
- if (tablero[fila][columna + i] != ' ' && palabra.charAt(i)!=tablero[fila][columna + i]) {
- return false;
- }
- }
- return true;
- } else if (!horizontal && !diagonal && fila + palabra.length() <= tablero.length) {
- for (int i = 0; i < palabra.length(); i++) {
- if (tablero[fila + i][columna] != ' ' && palabra.charAt(i)!=tablero[fila + i][columna]) {
- return false;
- }
- }
- return true;
- } else if(diagonal && columna + palabra.length() <= tablero[0].length && fila + palabra.length() <= tablero.length) {
- for (int i = 0; i < palabra.length(); i++) {
- if (tablero[fila + i][columna + i] != ' ' && palabra.charAt(i)!=tablero[fila + i][columna + i]) {
- return false;
- }
- }
- return true;
- }
- return false;
- }
- private static void colocarPalabra(char[][] tablero, String palabra, int fila, int columna, boolean horizontal, boolean diagonal) {
- if (horizontal) {
- for (int i = 0; i < palabra.length(); i++) {
- tablero[fila][columna + i] = palabra.charAt(i);
- }
- } else if (!horizontal && !diagonal){
- for (int i = 0; i < palabra.length(); i++) {
- tablero[fila + i][columna] = palabra.charAt(i);
- }
- } else if (diagonal) {
- for (int i = 0; i < palabra.length(); i++) {
- tablero[fila + i][columna + i] = palabra.charAt(i);
- }
- }
- }
- private static void llenarEspaciosEnBlanco(char[][] tablero) {
- Random rand = new Random();
- String letras = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- for (int i = 0; i < tablero.length; i++) {
- for (int j = 0; j < tablero[i].length; j++) {
- if (tablero[i][j] == ' ') {
- int index = rand.nextInt(letras.length());
- tablero[i][j] = letras.charAt(index);
- }
- }
- }
- }
- private static void imprimirTablero(char[][] tablero) {
- for (int i = 0; i < tablero.length; i++) {
- for (int j = 0; j < tablero[i].length; j++) {
- System.out.print(tablero[i][j] + " ");
- }
- System.out.println();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement