Rompecabezas

Enunciado

Se quiere construir un programa que permita jugar de manera interactiva el juego de rompecabezas. El juego debe ofrecer múltiples figuras para armar y no puede haber figuras repetidas. La lista de figuras disponibles para jugar se carga al comienzo de la aplicación de un archivo de propiedades.


De cada figura se quiere registrar su nombre, su dificultad (superior, media o baja),  su categoría o tipo de clasificación de la imagen (Geografía, personas, paisajes, objetos, animales), el número de fichas de alto, el  número de fichas de ancho y finalmente la imagen de la figura.


De las fichas de las figuras se tiene la siguiente información: imagen, región a la cual pertenece dentro de la figura (Ver figura 1),  la columna a la que pertenece, la fila a la que pertenece y la posición relativa en la figura (Ver figura 2).

 

figura1

Figura 1

figura2

Figura 2

 

Los servicios que ofrece el programa son:

1. Mostrar todas las figuras disponibles para armar ordenadas por dificultad o por categoría.

2. Buscar una figura dada su nombre y mostrar su detalle.

3. Seleccionar cualquier figura al azar.

4. Iniciar un nuevo juego para armar una figura.

5. Ordenar las figuras por categoría y dificultad.

6. Ordenar las fichas de una figura por columnas, filas o regiones.

7. Armar una figura de manera automática.

8. Terminar el juego.

Cuando se selecciona buscar una figura, la aplicación deberá mostrar toda la información de la figura (categoría, dificultad, número de fichas).

 

Una vez se ha seleccionado una figura se puede dar comienzo al juego. La aplicación debe mostrar tanto las imágenes de las fichas, como una lista con la posición de la ficha y la región. Se requiere que cuando se seleccione una ficha de la lista, esta sea resaltada.

 

Como una ayuda al usuario, la aplicación debe permitir organizar las fichas de la figura de acuerdo a varios criterios: por columna, por fila y por región.

 

Para este ordenamiento se especifica que primero aparecerán las fichas que están en las esquinas, luego las que se encuentran en los bordes y después las fichas internas.

 

Un juego puede terminar de dos maneras: porque el usuario eligió la opción de armar automáticamente la figura o porque el usuario ha terminado de colocar todas las fichas en la figura y escoge terminar el juego. Cuando se termina el juego la aplicación valida si la figura se armó correctamente o no.

 

La aplicación debe manejar unas estadísticas sencillas. Debe llevar la cuenta de cuantas figuras ha armado el usuario, cuantas figuras ha intentado armar y el tiempo que demoro armando la última figura.

 

n7 rompecabezas

 

 

 

Demo