Skip to content

Latest commit

 

History

History
174 lines (130 loc) · 6.87 KB

File metadata and controls

174 lines (130 loc) · 6.87 KB

DAM2Chess ♟️

Un juego de ajedrez completo desarrollado en Java con interfaz gráfica Swing, creado como proyecto académico para Desarrollo de Interfaces (DAM2).

Java NetBeans License

📋 Descripción

DAM2Chess es una aplicación de escritorio que implementa un juego de ajedrez completo con todas las reglas oficiales, incluyendo movimientos especiales como enroque, detección de jaque, jaque mate y tablas por ahogado. La aplicación incluye gestión de usuarios, sistema de estadísticas y soporte multiidioma.

✨ Características

Funcionalidades del Juego

  • ♟️ Reglas completas de ajedrez: Movimientos válidos para todas las piezas
  • 👑 Movimientos especiales: Enroque (corto y largo)
  • ⚠️ Detección de situaciones: Jaque, jaque mate y tablas por ahogado
  • 💾 Guardar y cargar partidas: Sistema de persistencia con archivos .chess
  • 🎮 Control de turnos: Alternancia automática entre jugadores
  • 💡 Tooltips informativos: Información sobre cada pieza al pasar el cursor

Sistema de Usuarios

  • 👤 Gestión de usuarios: Crear y administrar múltiples usuarios
  • 📊 Estadísticas detalladas: Partidas jugadas, ganadas, perdidas y porcentajes
  • 🎭 Avatares personalizables: Selección de iconos para cada jugador

Personalización

  • 🌍 Multiidioma: Soporte para español, inglés y francés
  • 🎨 Temas personalizables: Múltiples temas visuales con FlatLaf
  • 🎨 Colores configurables: Personalización de colores del tablero
  • 💾 Persistencia de preferencias: Guardado automático de idioma y configuración

🛠️ Tecnologías Utilizadas

  • Java 17+ - Lenguaje de programación
  • Swing - Framework para interfaz gráfica
  • NetBeans - Entorno de desarrollo integrado
  • FlatLaf 3.5.4 - Biblioteca de temas modernos para Swing
  • Java Serialization - Persistencia de datos
  • ResourceBundle - Sistema de internacionalización (i18n)

📦 Requisitos

  • Java JDK 17 o superior
  • NetBeans IDE (opcional, para desarrollo)

🚀 Instalación y Ejecución

Requisitos

  • Java 17 o superior instalado en tu sistema
  • Puedes descargarlo desde oracle.com/java

Opción 1: Ejecutar desde la Release (recomendado)

  1. Ve a la sección Releases
  2. Descarga la última versión
  3. En Windows: Ejecuta DAM2Chess.bat con doble clic
  4. En Linux/Mac: Ejecuta desde terminal:
    java -jar DAM2Chess.jar

Opción 2: Compilar desde el código fuente

  1. Clona el repositorio:

    git clone https://github.com/rubengarrod/LocalChessJava.git
    cd LocalChessJava
  2. Abre el proyecto en NetBeans:

    • Archivo → Abrir Proyecto
    • Selecciona la carpeta raíz del repositorio clonado
  3. Ejecuta el proyecto:

    • Clic derecho en el proyecto → Ejecutar

📖 Cómo Jugar

  1. Crear usuarios: Ve a Usuarios → Gestionar y crea al menos 2 usuarios
  2. Iniciar partida: Selecciona Juego → Nuevo y elige los dos jugadores
  3. Realizar movimientos:
    • Clic en una pieza para seleccionarla
    • Clic en el destino para moverla
    • Solo se permiten movimientos válidos según las reglas del ajedrez
  4. Guardar partida: Juego → Guardar (guarda el estado actual)
  5. Cargar partida: Juego → Cargar (restaura una partida guardada)

📂 Estructura del Proyecto

LocalChessJava/
├── src/
│   ├── model/              # Lógica del juego
│   │   ├── Partida.java    # Control de la partida
│   │   ├── Tablero.java    # Representación del tablero
│   │   ├── Posicion.java   # Coordenadas del tablero
│   │   ├── piezas/         # Clases de piezas (Rey, Reina, etc.)
│   │   └── usuarios/       # Gestión de usuarios
│   ├── GUI/                # Interfaces gráficas
│   │   ├── VentanaPrincipal.java
│   │   └── Dialogo*.java   # Diálogos varios
│   ├── componentes/        # Componentes visuales personalizados
│   ├── i18n/               # Archivos de idiomas
│   ├── img/                # Recursos gráficos
│   └── preferencias/       # Gestión de preferencias
├── lib/                    # Librerías externas (FlatLaf, PDFBox)
├── nbproject/              # Configuración de NetBeans
├── partidasdeprueba/       # Partidas de ejemplo para testing
├── store/                  # JAR ejecutable compilado
├── Documentación/          # Documentación del proyecto (PDF)
├── JAVADOC/                # Documentación técnica de las clases
├── build.xml               # Script de compilación Ant
└── README.md               # Este archivo

🧪 Casos de Prueba

El proyecto incluye partidas de prueba en la carpeta partidasdeprueba/:

  • JaqueMate.chess: Partida a un movimiento del jaque mate
  • Enroques.chess: Escenario para probar enroques corto y largo
  • Tablas.chess: Partida lista para tablas por ahogado
  • PartidaVacia.chess: Para probar el manejo de errores

📚 Documentación

La documentación completa del proyecto se encuentra en:

🎯 Características Técnicas Destacables

  • Arquitectura MVC: Separación clara entre lógica y presentación
  • Serialización: Guardado completo del estado del juego
  • Validación de movimientos: Implementación fiel de las reglas del ajedrez
  • Detección de jaque/mate: Simulación de movimientos para evitar jaques ilegales
  • Internacionalización: Sistema dinámico de cambio de idioma
  • Persistencia: Guardado de usuarios, estadísticas y preferencias

👨‍💻 Autor

Rubén García Rodríguez

📄 Licencia

Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.

🙏 Agradecimientos

  • Profesor Josué por la propuesta del proyecto
  • FlatIcon (BZZRINCANTATION) por los iconos
  • Comunidad de Stack Overflow y tutoriales de Java

🐛 Reportar Problemas

Si encuentras algún bug o tienes sugerencias, por favor abre un issue en GitHub.

🔮 Futuras Mejoras

  • Implementar IA para jugar contra la máquina
  • Añadir sistema de puntuación por piezas capturadas
  • Reloj de ajedrez con tiempo límite
  • Histórico de movimientos con notación algebraica
  • Modo en línea para jugar por red
  • Exportar partidas en formato PGN