Skip to content

Proyecto académico de Desarrollo de Interfaces (DAM2) Juego de ajedrez en Java Swing con funcionalidades completas.

License

Notifications You must be signed in to change notification settings

RubenGarrod/LocalChessJava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Proyecto académico de Desarrollo de Interfaces (DAM2) Juego de ajedrez en Java Swing con funcionalidades completas.

Topics

Resources

License

Stars

Watchers

Forks