Xadrez em Java
mai. de 2026 — em andamento
Screenshots em breve.
Implementação de um jogo de xadrez em Java puro, construído do zero como estudo aprofundado de Programação Orientada a Objetos. A lógica de regras é totalmente independente da camada de apresentação, o que permite trocar o terminal por interface gráfica sem alterar o núcleo do jogo.
Arquitetura
O projeto separa três responsabilidades: regras de movimento (cada peça calcula seus próprios movimentos válidos), estado do tabuleiro (posicionamento, captura e consulta de casas) e coordenação da partida (controle de turno e validação de jogadas).
A decisão central é o uso de uma classe abstrata Peca com o método abstrato movimentosValidos, implementado de forma distinta por cada peça concreta. Isso aplica polimorfismo a um problema real: o mesmo método produz comportamentos diferentes para Bispo, Torre, Cavalo e demais peças, sem condicionais espalhadas pelo código.
A camada de regras não conhece a interface. O cálculo de movimentos, a validação e o estado do jogo funcionam de forma idêntica no terminal e na futura interface gráfica.
Estrutura de classes
Posicao Coordenada (linha, coluna) com validação e comparação
Peca Classe abstrata: cor, posição e movimentosValidos (abstrato)
├── Rei
├── Rainha
├── Torre
├── Bispo
├── Cavalo
└── Peao
Tabuleiro Grade 8x8, inicialização, consulta e movimentação de peças
Partida Turno atual, validação de jogada e alternância de jogadores
Main Ponto de entrada e laço de jogo
Relações: Peca tem uma Posicao (composição); cada peça concreta é uma Peca (herança); Tabuleiro contém as peças.
Funcionalidades implementadas
- Tabuleiro 8x8 com posicionamento inicial completo das 32 peças
- Movimentos válidos para as seis peças, incluindo regras específicas do peão (avanço duplo na primeira jogada e captura na diagonal)
- Detecção de peças aliadas e inimigas no cálculo de caminho
- Captura por sobreposição
- Controle de turno e bloqueio de jogadas fora de vez
- Validação de movimento contra as regras de cada peça
Roadmap
- Interface gráfica com Swing
- Detecção de xeque e xeque-mate
- Oponente controlado por IA com algoritmo minimax e níveis de dificuldade
- Multiplayer entre dois jogadores
- Deploy para partidas online e sistema de ranking
Status
Em andamento. O núcleo de regras está completo e funcional via terminal. As próximas etapas são a interface gráfica em Swing, a detecção de xeque-mate e a IA com minimax.