Alguien me puede ayudar con la parte de interfaz gráfica de usuario de este ejercicio. Es que no se como hacer lo de cargar un fichero y mostrar el tablero que pide. Saludos !
Palabras Cruzadas.
En el pasatiempo de palabras cruzadas, se dispone de una tabla de letras minúsculas NxN y el objetivo es encontrar palabras. Una palabra puede empezar en cualquier lugar en la tabla y puede ser construida utilizando letras adyacentes tanto en forma horizontal, vertical o diagonal.
Un ejemplo de una tabla 4x4 puede ser:
anap
siix
aopp
sxxx
Algunas de las palabras que aparecen son:
asas
ana
pios
Se pide construir un programa que permita tanto resolver manualmente un pasatiempo de palabras cruzadas como de forma automática. Las palabras que se buscarán no serán palabras de un diccionario sino simplemente palabras formadas por caracteres que estén en secuencia creciente respecto a su codificación en ASCII. El programa tendrá dos interfaces, uno a través de la entrada/salida estándar y el otro mediante un interfaz gráfico de usuario.
Interfaz entrada/salida estándar
Este será el interfaz por defecto y será llamado desde el método main de una clase Main del programa. No podrá haber ningún otro método main en ninguna otra clase. El objetivo del programa a través de este interfaz es resolver automáticamente un pasatiempo de palabras cruzadas como el descrito, encontrando todas las palabras diferentes válidas. Una palabra es válida si tiene de 3 a N2 letras todas ellas en orden estrictamente ascendente respecto a su codificación ASCII. Por ejemplo, "abc" es una palabra válida, "abcc" no y tampoco es legal "robar". Se debe tener en cuenta la eficiencia de la solución encontrada.
Entrada
La primera línea contendrá un número indicando el número de casos de test que siguen. A continuación irá una línea en blanco y también habrá una línea en blanco separando cada caso de test. Cada test contendrá un primer número N en una línea indicando el tamaño de la tabla. N podrá valer como mucho 20. Esa línea irá seguida de N líneas cada una de ellas con una cadena de N letras.
Salida
Para cada test la salida debe ser como se describe a continuación e ir separada con una línea en blanco, excluido el último caso de test. La salida de cada test estará formada por una lista de palabras únicas ordenadas de acuerdo a los siguientes criterios:
1. Las palabras más cortas van antes que las palabras más largas
2. Las palabras de igual longitud se ordenan lexicográficamente por su valor ASCII.
No se deben añadir blancos ni líneas extras. Si no hay palabras, no se imprimirá nada para ese test.
Ejemplo
Entrada
2
3
uno
dos
ves
4
abcd
bcda
cdab
dabc
Salida
deo
des
dev
dno
dns
dnu
dos
dou
dov
eos
eou
eov
nos
nou
nov
deos
deou
deov
dnos
dnou
dnov
abc
abd
acd
bcd
abcd
Interfaz gráfico de usuario
El interfaz gráfico de usuario se podrá arrancar a partir de la llamada a un método público estático denominado void interfazGrafico() que no tomará ningún argumento
y no devolverá tampoco ningún valor.
A través del interfaz gráfico de usuario el programa deberá poder cubrir los siguientes requerimientos:
Cargar un pasatiempo desde un fichero y visualizarlo en pantalla mediante una tabla de NxN casillas. El formato de un fichero que contiene un pasatiempo será un fichero de texto que contendrá un único test de la forma descrita en la entrada de la interfaz gráfico de usuario y que podrá contener una solución parcial al pasatiempo. Por tanto contendrá una primera línea con el tamaño N del pasatiempo y a continuación N líneas con una string en cada una de N caracteres que definirá la tabla de caracteres. Después podrá venir una lista de palabras, que puede ser vacía, contenidas en la tabla. Si la lista de palabras solución es no vacía, se separará con una línea en blanco de la parte de definición del pasatiempo. La lista será un conjunto de líneas conteniendo una palabra en cada una de ellas que pertenece al conjunto solución del problema. Las palabras de la solución deberán ir ordenadas cómo se describe en la salida del interfaz estándar. Al cargar un pasatiempo se visualizará tal como se indica en el punto 3 junto con las palabras solución que contenga el fichero resaltándolas adecuadamente.
Salvar un pasatiempo en cualquier momento a un fichero en el formato descrito en 1.
Visualizar el pasatiempo consistirá en mostrar en pantalla la tabla de caracteres que definen el pasatiempo y de resaltar de algún modo las palabras solución encontradas hasta el momento. Si al cargar un pasatiempo, éste contiene palabras de la solución deberá resaltarlas en la tabla de algún modo.
Permitir al usuario resolver el pasatiempo, mediante la selección de las letras que forman una palabra. El usuario podrá validar el conjunto de letras seleccionado como una palabra oprimiendo un botón. Si es una palabra válida, la palabra irá a formar parte de una lista de palabras solución que serán visualizadas en pantalla de forma continúa. Si el conjunto de letras no forma una palabra válida, se eliminará la selección realizada por el usuario.
Ayudar al usuario resolviendo automáticamente el pasatiempo a petición suya, visualizando adecuadamente dicha solución.