Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/05/2006, 13:13
Avatar de Kias
Kias
 
Fecha de Ingreso: mayo-2006
Ubicación: México
Mensajes: 2
Antigüedad: 18 años, 8 meses
Puntos: 0
Busqueda Ayuda sopa de letras

Hola, tengo un porblema con una sopa de letras, no se si alguien me podría ayudar a resolverlo, este es mi codigo, pero no funciona nada bien. A ver si alguien me puede ayudar a encontrar el problema.
import java.io.*;
import java.util.*;
import acm.program.ConsoleProgram;

public class ProyectoFinal extends ConsoleProgram
{

private final int row = 30;
private final int col = 30;
public static String palabrota="";
public static String posicion ="";
public static int k = 0;

public static void main(String[] args)
{
new ProyectoFinal().start();
}

public void run()
{

// declarando el manejador de archivos
Scanner filelector = null;
char[][] mat = new char[row][col];

// abriendo el archivo y validando que exista... si no existe lanza una excepción
try
{
filelector = new Scanner(new FileReader("Entrada.dat"));
filelector.useDelimiter("[\t\n\r]+");
rellenaMatriz(filelector, mat);
filelector.close();
}

catch (IOException a)
{
System.out.println (" No existe ese archivo ");
System.exit(1);
}

// imprime la matriz que fue copiada del archivo de entrada
for (int i = 0; i < mat.length; i++)
{
for (int j = 0; j < mat[0].length; j++)
this.print(mat[i][j]);
this.println();
}

// aqui deberas colocar la llamada al metodo de buscaPalabra

while(true)
{
this.println("Dime una palabra para buscar");
palabrota = this.readLine();
buscaPalabra(mat,palabrota.toCharArray());

if(palabrota == "sayonara")
break;
}


}


// metodo que rellena la matriz con los caracteres que se leen de un archivo
public static<T> void rellenaMatriz(Scanner lector1, char[][] mat)
{
int i = 0;
String str;

while(lector1.hasNext())
{
str = lector1.next();
for (int j= 0; j < str.length(); j++)
mat[i][j] = str.charAt(j);
i++;
}
}


/*metodo que busca la palabra (aki se validan los metodos hor, horR, ver, verR
diagonales ambos lados y en reversa*/

//hacer metodo por metodo por separado
public void buscaPalabra(char[][] mat, char[] pal)
{
int k;
//metodo horizontal
for (int i = 0; i >= 0 && i < 29; i++)
for (int j = 0; j < mat[i].length; j++)
{
if(mat[i][j] == pal[k])
k = 0;
}
for (k = 1; k < pal.length; k++)
{
if(mat[i][++j] != pal[k])
break;

this.println("La palabra " + palabrota + " esta en la posicion: "
+ i + "," + j + " de forma horizontal");

}

int k;
int i;
int j;
String palok;

//metoodo horizontal
for (i = 0; i < mat.length; i++)
{
k = 0;
palok = "";
for(j = 0; j < mat[i].length; j++)
{
if(mat[i][j] == pal[k])
for(k = 1; k < pal.length; k++)
{
palok += mat[i][j];
this.println("La palabra " + palabrota + " esta en la posicion: "
+ i + "," + j + " de forma horizontal" + "\n");
}

else
{
k = 0;
palok = "";
}
}
}

}
}

//metodo horizontal r
for (int i = 29; i >= 0 && i < 29; i++)
for (int j = 29; j < mat[i].length; j++)
if(mat[i][j] == pal[k])
for (k = 1; k < pal.length; k++)
{
if(mat[i][++j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma horizontal reversa");

k = 0;

}


//metodo vertical
for (int i = 0; i >= 0 && i < 29; i++)
for (int j = 0; j < mat[i].length; j++)
if(mat[i][j] == pal[k])
for (k = 1; k < pal.length; k++)
{
if(mat[++i][j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma vertical");

k = 0;
}

//metodo vertical r
for (int i = 29; i >= 0 && i < 29; i++)
for (int j = 29; j < mat[i].length; j++)
if(mat[i][j] == pal[k])
for (k = 1; k < pal.length; k++)
{
if(mat[--i][j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma vertical reversa");

k = 0;
}

//metodo diagonal derecha
for (int i = 0; i >= 0 && i < 29; i++)
for (int j = 0; j < mat[i].length; j++)
if(mat[i][j] == pal[k])
for (k = 1; k < pal.length; k++)
{
if(mat[++i][++j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma diagonal derecha");

k = 0;

//metodo diagonal derecha reversa
if(mat[--i][--j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma diagonal derecha reversa");


k = 0;

//metodo diagonal izquierda
if(mat[--i][++j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma diagonal izquierda");



k = 0;

//metodo diagonal izquierda reversa
if(mat[++i][--j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma horizontal");



k = 0;