Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ======================================================================================================================
- * Modelo de Desarrollo de Programas y Programación Concurrente - Facultad de Ingeniería - Universidad Nacional de Jujuy
- ======================================================================================================================
- */
- /**
- * @Autor: Grupo 02 M.D.P y P.C.
- /* @Integrantes: | @Carrera: | @DNI:
- | |
- ALVAREZ, Cesar Fabian | Ing. Informática | 41.275.832
- CABANA, Mario Ariel Fernando | Ing. Informática | 42.268.639
- MONTELLANO, Leandro | Ing. Informática | 43.114.035
- RETAMOZO CORTEZ, Candelaria | Ing. Informática | 95.790.260
- RUIZ, Erica Vanina | Ing. Informática | 38.471.424
- * @Fecha: 28/04/2022.
- */
- /*
- Trabajo Práctico N°2 / Introducción a Java Parte 2 / Punto 07
- --------------------- --------------------------- --------
- * Objetivo General: Definir una matriz de caracteres de 12 x 12.
- - Programáticamente disponer las siguientes palabras en distintas posiciones.
- - Asegúrar de que todas quepan.
- - Rellene los espacios en blanco con caracteres aleatorios.
- - Muestre el resultado final.
- * El trabajo se ha realizado utilizando las siguientes IDEs: Eclipse 2020-06(4.16)-(IDE for Java Developers) - Apache Netbeans IDE 12.4 - IntelliJ IDEA 2021.2.3
- * Lenguaje de programación: Java POO.
- * Api a utilizar. Paquete:- Java.util / Clase:- Scanner.
- * Paquete:- Java.io / Clase:- BufferedReader, FileReader, IOException, StreamTokenizer.
- * Clase principal: EntregaTPN3.
- * Clases secundarias: Helper, Ejercicio5, Ejercicio7.
- */
- package ar.edu.unju.aplication;
- public class Ejercicio7 {
- //------------------- Inicio método run() -------------------//
- public static void run() {
- char [][] sopa= new char[12][12];
- String [] palabras = {"CAMELLO","ELEFANTE","AGUILA","CAMALEON","AVESTRUZ","COCODRILO","ANTILOPE","SERPIENTE","BUFALO","COMADREJA"};
- rellenarConEspaciosEnBlanco(sopa);
- int bandera,opcion=0;
- // Inserción de palabras.
- for(int i=0;i<= palabras.length-1;i++){
- opcion=(int)((Math.random()*(3))+1);
- switch(opcion){
- case 1:
- bandera=insertarHorizontal(sopa,palabras[i]);
- if (bandera==0){
- i--;
- }
- break;
- case 2:
- bandera=insertarVertical(sopa,palabras[i]);
- if (bandera==0){
- i--;
- }
- break;
- case 3:
- bandera=insertarDiagonal(sopa, palabras[i]);
- if (bandera==0){
- i--;
- }
- break;
- }
- }
- rellenarSopa(sopa);
- mostrar(sopa);
- }// Fin run.
- //------------------ Método para la matriz ------------------//
- // Metodo para rellenar con espacios en blanco
- public static void rellenarConEspaciosEnBlanco(char [][] caracteres){
- for(int i=0;i<=11;i++){
- for(int j=0;j<=11;j++){
- caracteres[i][j]=' ';
- }
- }
- }
- // Metodo para rellenar los espacios en blanco
- public static void rellenarSopa(char [][] caracteres){
- for(int i=0;i<=11;i++){
- for(int j=0;j<=11;j++){
- if (caracteres[i][j]==' '){
- int generado=(int) (Math.random()*(90-65)+65);
- caracteres[i][j]=(char)generado;
- }
- }
- }
- }
- // Metodo para mostrar la sopa de letras
- public static void mostrar(char [][] caracteres){
- System.out.println(" =============== SOPA DE LETRAS ===============");
- System.out.println(" 0 1 2 3 4 5 6 7 8 9 10 11");
- System.out.println(" -----------------------------------------------");
- for(int i=0;i<=11;i++){
- if (i<10) System.out.print(" "+i+"| ");
- else System.out.print(i+" | ");
- for(int j=0;j<=11;j++){
- if (Character.isLowerCase(caracteres[i][j])){
- System.out.print(caracteres[i][j]+ " ");
- }else{
- System.out.print(caracteres[i][j]+ " ");
- }
- }
- System.out.println("\n");
- }
- }
- //-------------- Método para insertar palabras --------------//
- public static int insertarHorizontal(char sopa[][],String palabra){
- int opcion, palabraInsertada=0;
- int fila, columna, limiteDeIteraciones=1;
- boolean tabien;
- while(palabraInsertada==0 && limiteDeIteraciones!=0){
- fila=numeroAleatorio(); columna=numeroAleatorio();
- tabien=true;
- opcion=banderaAleatoria();
- switch (opcion){
- case 1:
- // Si no hay espacio a la derecha, vuelve a intentar en otra columna y fila
- if(columna+palabra.length()>12){
- break;
- }else{
- for (int i=0;i<=palabra.length()-1;i++){// Me fijo si entra.
- if (sopa[fila][columna+i]!=' ' && sopa[fila][columna+i]!=Character.toLowerCase(palabra.charAt(i))){
- tabien=false;
- limiteDeIteraciones--;
- break;
- }
- }//Fin de for para ver si entra o no.
- if(tabien==false){
- palabraInsertada=0; //No se inserto
- }else{
- for (int i=0;i<=palabra.length()-1;i++){
- sopa[fila][columna+i]=Character.toLowerCase(palabra.charAt(i));
- }
- palabraInsertada=1; //Si se inserto
- }
- break;
- }
- case 2:
- // Si no hay espacio a la izquierda, vuelve a intentar en otra columna y fila
- if(columna-palabra.length()<0){
- break;
- }else{
- int k=palabra.length()-1;
- for (int i=0;i<=palabra.length()-1;i++){// Me fijo si entra.
- if (sopa[fila][columna-k]!=' ' && sopa[fila][columna-k]!=Character.toLowerCase(palabra.charAt(i))){
- tabien=false;
- limiteDeIteraciones--;
- break;
- }
- k--;
- }//Fin de for para ver si entra o no.
- if(tabien==false){
- palabraInsertada=0; //No se inserto
- }else{
- int j=palabra.length()-1;
- for (int i=0;i<=palabra.length()-1;i++){
- sopa[fila][columna-j]=Character.toLowerCase(palabra.charAt(j));
- j--;
- }
- palabraInsertada=1; //Si se inserto
- }
- break;
- }
- }//fin Swich
- }// fin While
- if (limiteDeIteraciones==0){
- return 0;
- }else{
- return 1;
- }
- }//Fin de Metodo insertar Horizontal.
- public static int insertarVertical(char sopa[][],String palabra){
- int opcion, palabraInsertada=0;
- int fila, columna, limiteDeIteraciones=1;
- boolean tabien;
- while(palabraInsertada==0 && limiteDeIteraciones!=0){
- fila=numeroAleatorio(); columna=numeroAleatorio();
- tabien=true;
- opcion=banderaAleatoria();
- switch (opcion){
- case 1:
- // Si no hay espacio a la derecha, vuelve a intentar en otra columna y fila
- if(fila+palabra.length()>12){
- break;
- }else{
- for (int i=0;i<=palabra.length()-1;i++) {// Me fijo si entra.
- if (sopa[fila+i][columna]!=' '&& sopa[fila+i][columna]!=Character.toLowerCase(palabra.charAt(i))){
- tabien=false;
- limiteDeIteraciones--;
- break;
- }
- }//Fin de for para ver si entra o no.
- if(tabien==false){
- palabraInsertada=0; //No se inserto
- }else{
- for (int i=0;i<=palabra.length()-1;i++){// Recien traspaso la palabra.
- sopa[fila+i][columna]=Character.toLowerCase(palabra.charAt(i));
- }
- palabraInsertada=1; //Si se inserto
- }
- break;
- }
- case 2:
- // Si no hay espacio a la izquierda, vuelve a intentar en otra columna y fila
- if(fila-palabra.length()<0){
- break;
- }else{
- int k=palabra.length()-1;
- for (int i=0;i<=palabra.length()-1;i++){// Me fijo si entra.
- if (sopa[fila-k][columna]!=' '&& sopa[fila-k][columna]!=Character.toLowerCase(palabra.charAt(i))){
- tabien=false;
- limiteDeIteraciones--;
- break;
- }
- k--;
- }//Fin de for para ver si entra o no.
- if(tabien==false){
- palabraInsertada=0; //No se inserto
- }else{
- int j=palabra.length()-1;
- for (int i=0;i<=palabra.length()-1;i++){
- sopa[fila-j][columna]=Character.toLowerCase(palabra.charAt(j));
- j--;
- }
- palabraInsertada=1; //Si se inserto
- }
- break;
- }
- }//Swich
- }//While
- if (limiteDeIteraciones==0){
- return 0;
- }else{
- return 1;
- }
- }//fin metodo insertar vertical
- public static int insertarDiagonal(char [][] sopa,String palabra){
- int opcion, palabraInsertada=0;
- int fila, columna, limiteDeIteraciones=1;
- boolean tabien;
- while(palabraInsertada==0 && limiteDeIteraciones!=0){
- fila=numeroAleatorio(); columna=numeroAleatorio();
- tabien=true;
- opcion=banderaAleatoria();
- switch (opcion){
- case 1:
- // Si no hay espacio a la derecha, vuelve a intentar en otra columna y fila
- if((fila+palabra.length()>12)||(columna+palabra.length()>12)){
- break;
- }else{
- for (int i=0;i<=palabra.length()-1;i++){// Me fijo si entra.
- if (sopa[fila+i][columna+i]!=' '&& sopa[fila+i][columna+i]!=Character.toLowerCase(palabra.charAt(i))){
- tabien=false;
- limiteDeIteraciones--;
- break;
- }
- }//Fin de for para ver si entra o no.
- if(tabien==false){
- palabraInsertada=0; //No se inserto
- }else{
- for (int i=0;i<=palabra.length()-1;i++){
- sopa[fila+i][columna+i]=Character.toLowerCase(palabra.charAt(i));
- }
- palabraInsertada=1; //Si se inserto
- }
- break;
- }
- case 2:
- // Si no hay espacio a la izquierda, vuelve a intentar en otra columna y fila
- if((fila-palabra.length()<0)||(columna-palabra.length()<0)){
- break;
- }else{
- int k=palabra.length()-1;
- for (int i=palabra.length()-1;i>=0;i--){// Me fijo si entra.
- if (sopa[fila-k][columna-k]!=' '&& sopa[fila-k][columna-k]!=Character.toLowerCase(palabra.charAt(i))){
- tabien=false;
- limiteDeIteraciones--;
- break;
- }
- k--;
- }//Fin de for para ver si entra o no.
- if(tabien==false){
- palabraInsertada=0; //No se inserto
- }else{
- int j=palabra.length()-1;
- for (int i=palabra.length()-1;i>=0;i--){
- sopa[fila-j][columna-j]=Character.toLowerCase(palabra.charAt(j));
- j--;
- }
- palabraInsertada=1; //Si se inserto
- }
- break;
- }
- }//Fin Swich
- }//Fin While
- if (limiteDeIteraciones==0){
- return 0;
- }else{
- return 1;
- }
- }// Fin Metodo Diagonal
- //------------- Método para generar aleatorios -------------//
- public static int banderaAleatoria(){
- return (int)((Math.random()*(2))+1);//Devuelve cero o uno
- }
- //Este metodo solo se utiliza para devolver un valor de fila o columna
- public static int numeroAleatorio(){
- int numerito = (int)(Math.random()*(12)+0);
- return numerito;
- }
- }
Add Comment
Please, Sign In to add comment