0% encontró este documento útil (0 votos)
40 vistas10 páginas

Desarrollo de Sudoku en Java MVC

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
40 vistas10 páginas

Desarrollo de Sudoku en Java MVC

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Entrega final Escenario 7 - Sustentación Escenario 8

Carlos A. Hernández

Cristian Camilo Correa Cuesta

Danyela Vivian Munza Suarez

Jhanpol Parra Barreto

Institución Universitaria Politécnico Grancolombiano

Paradigmas de Programación B01

Instructor Ricardo David Camargo Lemos

05 noviembre de 2024
2

Tabla de Contenido

Tabla de Contenido 2

Diagrama de clases UML 3

Clases del modelo: 3

Clases de la vista: 5

Clases del controlador: 5

Relaciones entre Clases 5

Pantallazos explicativos de la ejecución del programa 6

Detalles de la implementación 6

Problemas encontrados y solución en grupo. 6

Interfaz grafica JavaFX 7

Interfaz gráfica WindowBuilder 8

Sudoku sin resolver: 8

Sudoku resuelto: 8
3

Diagrama de clases UML

El diagrama está dividido en tres paquetes principales según el patrón MVC:

 Modelo: Contiene la lógica de negocio.

 Vista: Maneja la interfaz de usuario.

 Controlador: Gestiona la comunicación entre la vista y el modelo.

Clases del modelo:

 Principal: Clase principal que inicia el programa.

 Métodos:

1. main(String[] args): void - Punto de entrada del programa.

 Posiciones: Contiene lógica para validar posiciones y subcuadrículas.


4

 Métodos:

1. validarCuadricula(int[][] tabla, int fila, int columna, int valor):

boolean - Verifica si el valor es válido en la subcuadrícula.

2. validarFila(int[][] tabla, int fila, int valor): boolean - Valida si el

valor es correcto en la fila.

3. validarColumna(int[][] tabla, int columna, int valor): boolean -

Valida si el valor es correcto en la columna.

4. subCuadriculaActual(int fila): int - Obtiene la subcuadrícula actual

a partir de la fila.

5. subCuadricula(int pos): int - Retorna la subcuadrícula a partir de la

posición.

 Tablero: Representa la estructura del tablero de Sudoku.

 Métodos:

1. getTabla(): int[][] - Devuelve el estado del tablero.

2. resolverSudoku(Posiciones validador): boolean - Resuelve el

Sudoku usando validaciones.

 MostrarSudoku: Muestra el tablero en consola.

 Métodos:

1. imprimirSudoku(int[][] tabla): void - Imprime el tablero en

consola.
5

Clases de la vista:

 VistaSudoku: Maneja la interfaz gráfica.

 Atributos:

1. controlador: ControladorSudoku - Controlador asociado a la vista.

2. camposSudoku: TextField[][] - Campos de texto que representan el

tablero en la interfaz gráfica.

 Métodos:

1. start(Stage primaryStage): void - Inicia la interfaz gráfica.

2. resolverSudoku(): void - Inicia la resolución del Sudoku desde la

interfaz.

3. main(String[] args): void - Alternativa de ejecución.

Clases del controlador:

 ControladorSudoku: Maneja la lógica entre la vista y el modelo.

 Métodos:

1. getTabla(): int[][] - Obtiene el tablero desde el modelo.

2. resolverSudoku(): boolean - Resuelve el tablero llamando métodos

del modelo.

Relaciones entre Clases

 Dependencia ("usa"):

1. VistaSudoku usa a ControladorSudoku.

2. ControladorSudoku usa a Tablero.

3. Tablero usa a Posiciones para validar.


6

 Asociación:

1. Principal tiene instancias de Tablero y Posiciones.

 Instancia:

1. Principal instancia Posiciones.

2. VistaSudoku instancia su ControladorSudoku.

Pantallazos explicativos de la ejecución del programa

Detalles de la implementación

El proyecto comenzó con la definición de las reglas básicas del Sudoku: una cuadrícula

de 9x9 dividida en 9 subcuadrículas de 3x3, donde cada fila, columna y subcuadrícula debe

contener los números del 1 al 9 sin repeticiones. Partiendo de esta base, se diseñó una interfaz

gráfica intuitiva que facilitara la interacción del usuario con el tablero.

Problemas encontrados y solución en grupo.

Inicialmente, planeamos desarrollar el Sudoku utilizando la interfaz gráfica de JavaFX.

Sin embargo, nos dimos cuenta de que se alejaba bastante de nuestra visión original. Tras

investigar y ver algunos tutoriales, descubrimos WindowBuilder, un plugin que nos permitió

crear una interfaz más estética y alineada con nuestro concepto inicial.

Aprender a usar esta herramienta desde cero fue un desafío, ya que al principio solo

logramos incorporar objetos gráficos sin funcionalidad. Los botones, por ejemplo, no respondían.
7

Esto nos llevó a profundizar en cómo añadir interactividad y vincular nuestro código existente a

la interfaz.

Finalmente, logramos completar la interfaz gráfica. Si bien no contiene todos los

elementos que habíamos planeado al principio, representa un avance significativo y cumple con

la funcionalidad básica que nos propusimos.

Interfaz grafica JavaFX


8

Interfaz gráfica WindowBuilder

Sudoku sin resolver:

Sudoku resuelto:
9

Conclusiones

El desarrollo del juego de Sudoku representó un proceso integral que combinó

planificación, diseño y ejecución técnica. Desde el concepto inicial hasta la implementación

final, cada etapa requirió un enfoque colaborativo y una constante adaptación a los desafíos que

surgieron.

Trabajo en Equipo y Colaboración

El éxito del proyecto se debe en gran parte al trabajo en equipo, donde cada miembro desempeñó

un rol específico que contribuyó al desarrollo:

 Desarrollo de la Lógica del Juego: Se enfocó en la creación y validación del algoritmo

de generación y resolución del tablero, asegurando la precisión y eficiencia del código.

 Diseño de la Interfaz Gráfica: Se trabajó en el diseño y usabilidad de la GUI, utilizando

WindowBuilder para garantizar una experiencia intuitiva y agradable para el usuario.

 Integración y Pruebas: Se asignó un miembro del equipo para integrar la lógica con la

interfaz, asegurando una comunicación fluida entre ambas capas. También realizó la fase

de pruebas, detectando y corrigiendo errores de funcionalidad y visualización.

La comunicación constante fue clave, permitiendo que se compartieran avances y se

resolvieran problemas rápidamente. Se utilizaron herramientas colaborativas como repositorios

de control de versiones (por ejemplo, Git) para gestionar el código, y reuniones periódicas para

alinear objetivos y ajustar prioridades.

Lecciones Aprendidas

El proyecto no solo fortaleció las habilidades técnicas de cada integrante, sino también las

habilidades blandas, como la resolución de conflictos, la gestión del tiempo. Aprender nuevas
10

tecnologías como WindowBuilder desde cero fue un reto, pero el equipo logró superarlo gracias

al apoyo mutuo y la disposición para aprender.

Referencias

Eclipse. (2014). Eclipse Foundation. Obtenido de [Link]

MauroTecnologíco. (10 de Octubre de 2021). YouTube. Obtenido de

[Link]

Netzcod. (23 de Noviembre de 2023). Youtube. Obtenido de [Link]

v=a9L9VOcBuLU&t=220s

Yo Androide. (3 de Noviembre de 2018). YouTube. Obtenido de

[Link]

También podría gustarte