Skip to content

Collaborative implementation of the classic Minesweeper game for console. Features complex matrix manipulation, recursive flood-fill algorithms, and input validation.

Notifications You must be signed in to change notification settings

jonathanAguirre1999/Console-Minesweeper-Java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Buscaminas (Console Edition) - Proyecto Final POO

Este repositorio contiene la implementación del clásico juego Buscaminas desarrollado en Java, diseñado para ejecutarse en consola. El proyecto fue creado como trabajo final de la asignatura de Programación Orientada a Objetos, aplicando patrones de diseño, recursividad y persistencia de datos.

Características Principales

  • Interfaz de Consola: Visualización clara del tablero utilizando caracteres ASCII ([■], [ ], *).
  • Algoritmo de Expansión (Flood Fill): Implementación de recursividad para descubrir automáticamente áreas seguras (ceros) adyacentes.
  • Persistencia de Datos: Sistema de Guardado (Save) y Carga (Load) de partidas utilizando Serialización de objetos en Java.
  • Validación Robusta: Manejo de excepciones personalizadas para evitar movimientos inválidos o redundantes.
  • Arquitectura MVC: Separación estricta entre Modelo (Lógica), Vista (Consola) y Controlador (Flujo).

Tecnologías Utilizadas

  • Lenguaje: Java (JDK 17+)
  • Control de Versiones: Git / GitHub
  • Herramientas: IDE (NetBeans/IntelliJ/Eclipse)

Arquitectura del Proyecto

El sistema sigue el patrón Modelo-Vista-Controlador (MVC):

  1. Modelo (ups.edu.poo.buscaminas.modelo):
    • Tablero: Contiene la matriz de Casilla y la lógica de recursividad. Implementa Serializable.
    • Casilla: Representa el estado individual (mina, revelada, número).
  2. Vista (ups.edu.poo.buscaminas.vista):
    • IVista: Interfaz que desacopla la implementación visual.
    • Consola: Muestra el estado del juego mediante prints formateados.
  3. Controlador (ups.edu.poo.buscaminas.controlador):
    • Gestiona el bucle del juego, captura inputs y coordina la persistencia.
  4. Util (ups.edu.poo.buscaminas.util):
    • ManejoArchivos: Encargado de escribir/leer el estado del objeto Tablero en disco (.dat).

Guía de Uso

Ejecución

Compila y ejecuta la clase principal desde tu IDE o terminal:

-> java ups.edu.poo.buscaminas.Main

Controles

El juego solicitará coordenadas o comandos en cada turno:

Ingresar Coordenada: Escribe la letra de la fila seguida del número de columna.

Ejemplo: A1, B5, J10.

Guardar Partida: Escribe la letra G en cualquier momento para guardar tu progreso y salir o continuar.

Simbología

[■]: Casilla cubierta (Desconocido).

[ ]: Casilla vacía (Sin minas alrededor).

[1-8]: Número de minas adyacentes.

*: ¡Mina! (Fin del juego).

Persistencia (Guardado)

El juego utiliza java.io.ObjectOutputStream para serializar el objeto Tablero completo. Esto permite que, al reiniciar la aplicación, el sistema detecte si existe un archivo partida_guardada.dat y pregunte al usuario si desea retomarla.

Autores

Jonathan Aguirre - QA Tester - Test unitarios y manejo de refactorización/Principios Solid

Bianchi Navarro - Vista e Interfaz de usuario

Michael Nivelo - Manejo de archivos, persistencia y excepciones personalizadas

Daniel Carrillo - Lógica de funcionamiento del juego

Universidad Politécnica Salesiana - 2025

About

Collaborative implementation of the classic Minesweeper game for console. Features complex matrix manipulation, recursive flood-fill algorithms, and input validation.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages