Un juego de ajedrez completo desarrollado en Java con interfaz gráfica Swing, creado como proyecto académico para Desarrollo de Interfaces (DAM2).
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.
- ♟️ 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
- 👤 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
- 🌍 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
- 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)
- Java JDK 17 o superior
- NetBeans IDE (opcional, para desarrollo)
- Java 17 o superior instalado en tu sistema
- Puedes descargarlo desde oracle.com/java
- Ve a la sección Releases
- Descarga la última versión
- En Windows: Ejecuta
DAM2Chess.batcon doble clic - En Linux/Mac: Ejecuta desde terminal:
java -jar DAM2Chess.jar
-
Clona el repositorio:
git clone https://github.com/rubengarrod/LocalChessJava.git cd LocalChessJava -
Abre el proyecto en NetBeans:
- Archivo → Abrir Proyecto
- Selecciona la carpeta raíz del repositorio clonado
-
Ejecuta el proyecto:
- Clic derecho en el proyecto → Ejecutar
- Crear usuarios: Ve a Usuarios → Gestionar y crea al menos 2 usuarios
- Iniciar partida: Selecciona Juego → Nuevo y elige los dos jugadores
- 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
- Guardar partida: Juego → Guardar (guarda el estado actual)
- Cargar partida: Juego → Cargar (restaura una partida guardada)
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
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
La documentación completa del proyecto se encuentra en:
- Documentación/RubenGarcia_Ajedrez.pdf - Memoria del proyecto con casos de uso y diagramas UML
- JAVADOC/ - Documentación técnica de las clases (JavaDoc generado)
- 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
Rubén García Rodríguez
- Email: rubengarcia97@usal.es
- Proyecto académico - Desarrollo de Interfaces (DAM2)
- Fecha: Enero 2025
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
- Profesor Josué por la propuesta del proyecto
- FlatIcon (BZZRINCANTATION) por los iconos
- Comunidad de Stack Overflow y tutoriales de Java
Si encuentras algún bug o tienes sugerencias, por favor abre un issue en GitHub.
- 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