Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tp03Punto07;
- import java.util.Random;
- public class SOPALETRAS {
- private String [][] matrizLetras = new String [12][12];
- private int x; // posicion columna
- private int auxColumna1; // auxiliar para saber numero de columna
- private String letraAleatoria = "WQWERTYUIOPASDFGHJKLÑZXCVBNM" ;
- Random aleatorio = new Random();
- //Busca si hay lugar para la palabra en una fila aleatoria
- public int buscarLugarHorizontal(String palabra) {
- int contador = 0;
- int i;
- x = aleatorio.nextInt(12);
- for(i=0; i<12 && contador<palabra.length() ;i++) {
- if(matrizLetras[x][i] == null){
- contador++;
- }else {
- contador = 0;
- }
- }
- if(contador>=palabra.length()) {
- return i;
- }else {
- return 0;
- }
- }
- // Carga la palabra en la Matriiz de derecha a izquierda
- public int cargarHorizontalDerecha(String palabra) {
- int poscolumnaFinal = buscarLugarHorizontal(palabra);
- int posicion = 0;
- if(poscolumnaFinal == 0) {
- return 0;
- }else {
- for(int i=poscolumnaFinal-(palabra.length());i<poscolumnaFinal;i++) {
- matrizLetras[x][i] = " "+palabra.charAt(posicion);
- posicion++;
- }
- return poscolumnaFinal;
- }
- }
- // Carga la palabra en la Matriz de izquierda a derecha
- public int cargarHorizontalIzquierda(String palabra) {
- int poscolumnaFinal = buscarLugarHorizontal(palabra);
- int posicion = 0;
- if(poscolumnaFinal == 0) {
- return 0;
- }else {
- for(int i=poscolumnaFinal-1;i>(poscolumnaFinal-1)-(palabra.length());i--) {
- matrizLetras[x][i] = " "+palabra.charAt(posicion);
- posicion++;
- }
- return poscolumnaFinal;
- }
- }
- // Busca si hay lugar para la palabra en una columna aleatoria
- public int buscarLugarVertical(String palabra) {
- int contador = 0;
- int i;
- x = aleatorio.nextInt(12);
- for(i=0; i<12 && contador<palabra.length() ;i++) {
- if(matrizLetras[i][x] == null){
- contador++;
- }else {
- contador = 0;
- }
- }
- if(contador>=palabra.length()) {
- return i;
- }else {
- return 0;
- }
- }
- // Carga la palabra en la Matriz de arriba a abajo
- public int cargarVerticalAscendente(String palabra) {
- int posFilaFinal = buscarLugarVertical(palabra);
- int posicion = 0;
- if(posFilaFinal == 0) {
- return 0;
- }else {
- for(int i=posFilaFinal-(palabra.length());i<posFilaFinal;i++) {
- matrizLetras[i][x] = " "+palabra.charAt(posicion);
- posicion++;
- }
- return posFilaFinal;
- }
- }
- // Carga la palabra en la Matriz de abajo a arriba
- public int cargarVerticalDescendente(String palabra) {
- int posFilaFinal = buscarLugarVertical(palabra);
- int posicion = 0;
- if(posFilaFinal == 0) {
- return 0;
- }else {
- for(int i=posFilaFinal-1;i>(posFilaFinal-1)-(palabra.length());i--) {
- matrizLetras[i][x] = " "+palabra.charAt(posicion);
- posicion++;
- }
- return posFilaFinal;
- }
- }
- // Busca lugar para la palabra segun una diagonal aleatoria
- public int buscarDiagonal(String palabra) {
- int contador = 0;
- int i;
- int j=0;
- do {
- x = aleatorio.nextInt(12);
- }while(x<7);
- for(i=x; i>=0 && contador<palabra.length() ;i--) {
- if(matrizLetras[i][j] == null){
- contador++;
- if(contador == palabra.length()) {
- break;
- }
- }else {
- contador = 0;
- }
- j++;
- }
- if(contador==palabra.length()) {
- auxColumna1=j;
- return i;
- }else {
- return 0;
- }
- }
- // Carga la palabra normal en la Matriz Diagonal
- public int cargarDiagonalnormal(String palabra) {
- int posFila = buscarDiagonal(palabra);
- int posColum = auxColumna1;
- int cont = palabra.length();
- if(posFila == 0) {
- return 0;
- }else {
- for(int i= posFila; i<12 && posColum>-1 && cont>0;i++) {
- matrizLetras[i][posColum]= " "+palabra.charAt(cont-1);
- posColum--;
- cont--;
- }
- return 1;
- }
- }
- // Carga la palabra invertida en la Matriz diagonal
- public int cargarDiagonalInvertida(String palabra) {
- int posFila = buscarDiagonal(palabra);
- int posColum = auxColumna1;
- int cont = 0;
- if(posFila == 0) {
- return 0;
- }else {
- for(int i= posFila; i<12 && posColum>-1 && cont<palabra.length();i++) {
- matrizLetras[i][posColum]= " "+palabra.charAt(cont);
- posColum--;
- cont++;
- }
- return 1;
- }
- }
- // Carga los casilleros vacios con letras aleatorias
- public void cargarAleatorio() {
- for(int i=0;i<12;i++) {
- for(int j=0;j<12;j++) {
- if(matrizLetras[i][j] == null) {
- //cuadroLetras[i][j] = " "+"x"; Para encontar mejor las palabras
- matrizLetras[i][j] = " "+letraAleatoria.charAt(aleatorio.nextInt(27));
- }
- }
- }
- }
- // Muestra la Matriz Completa
- public void Mostrar(){
- for(int i=0;i<12;i++) {
- for(int j=0; j<12;j++) {
- System.out.print(" "+matrizLetras[i][j]);
- }
- System.out.println("\n");
- }
- }
- public static void main(String[] args) {
- SOPALETRAS sopaDeLetras = new SOPALETRAS();
- String [] palabras = {"CAMELLO","ELEFANTE", "AGUILA","CAMALEON","AVESTRUZ","COCODRILO","ANTILOPE","SERPIENTE","BUFALO","COMADREJA"};
- int cont;
- System.out.println(" ----------SOPA DE LETRAS----------\n");
- System.out.println("Palabras a encontrar :\n");
- for(int j=0;j<10;j++) {
- System.out.println((j+1)+") "+palabras[j]);
- }
- System.out.println("\n");
- for(int i = 0;i<10;i++) {
- do {
- cont=0;
- if(sopaDeLetras.cargarDiagonalnormal(palabras[i]) ==0) {
- if(sopaDeLetras.cargarHorizontalDerecha(palabras[i]) == 0) {
- if(sopaDeLetras.cargarVerticalAscendente(palabras[i]) == 0) {
- if(sopaDeLetras.cargarHorizontalIzquierda(palabras[i]) == 0) {
- if(sopaDeLetras.cargarVerticalDescendente(palabras[i]) == 0) {
- if(sopaDeLetras.cargarDiagonalInvertida(palabras[i])==0) {
- }else {
- cont=1;
- }
- }
- }
- }
- }
- }
- }while(cont==1);
- }
- sopaDeLetras.cargarAleatorio();
- sopaDeLetras.Mostrar();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement