Este é um projeto de um jogo de xadrez completo, desenvolvido em Java com a biblioteca gráfica Swing. O software foi construído seguindo a arquitetura MVC (Model-View-Controller) e inclui funcionalidades avançadas como múltiplos modos de jogo (incluindo IA e rede), regras completas de xadrez, persistência de dados e ranking de jogadores.
O jogo conta com um conjunto completo de funcionalidades, desde as regras oficiais do xadrez até modos de jogo avançados.
- Movimentação Completa: Todas as peças se movem de acordo com as regras oficiais do xadrez. -Regras Essenciais: Implementação completa de Xeque, Xeque-mate e Empate (Afogamento).
- Movimentos Especiais:
- Roque (maior e menor).
- Captura En Passant.
- Promoção de Peão com opção de escolha (Dama, Torre, Bispo ou Cavalo).
- Jogador vs. Jogador: Modo clássico para dois jogadores no mesmo computador. -Jogador vs. IA (BOT): Jogue contra um oponente controlado pelo computador.
- A IA utiliza o algoritmo Minimax com a otimização de Poda Alfa-Beta para calcular suas jogadas. -Jogo em Rede (Sockets): Dispute partidas com outro jogador em uma rede local. -Controles de Tempo: Selecione modos de jogo com tempo, como Bullet (1 min), Blitz (5 min) e Rápida (10 min).
-Persistência de Jogo: Salve o estado de uma partida a qualquer momento e carregue-a mais tarde para continuar jogando. -Ranking de Vitórias: Um ranking de jogadores é mantido e salvo em um arquivo, registrando o número de vitórias de cada jogador. -Interface Gráfica Intuitiva: Interface limpa construída com Java Swing, com destaque visual para peças selecionadas e mensagens de status claras.
O software foi rigorosamente estruturado seguindo o padrão de arquitetura MVC (Model-View-Controller) para garantir a separação de responsabilidades, escalabilidade e manutenibilidade do código.
model: Contém toda a lógica de negócios e as regras do jogo. É o "cérebro" da aplicação.Ele não tem conhecimento da interface gráfica.- Classes principais:
Game,Tabuleiro,Peca(e suas subclasses),Ranking.
- Classes principais:
view: Responsável por toda a apresentação visual e pela interface com o usuário.Ela apenas exibe os dados fornecidos pelo modelo e captura as interações do usuário.- Classe principal:
JanelaXadrez.
- Classe principal:
controller: Atua como o intermediário, recebendo as ações do usuário (daView), processando-as, atualizando oModele, em seguida, atualizando aViewcom o novo estado.- Classe principal:
XadrezController.
- Classe principal:
ai: Pacote dedicado para a Inteligência Artificial, contendo a lógica do Minimax e a função de avaliação.network: Pacote dedicado para a funcionalidade de jogo em rede, gerenciando os Sockets e a comunicação.
- Linguagem: Java 8 ou superior.
- Interface Gráfica: Java Swing.
Siga as instruções abaixo para rodar o projeto.
- JDK (Java Development Kit) 8 ou superior instalado e configurado no sistema.
Para que os ícones das peças sejam exibidos corretamente, a estrutura de pastas do seu projeto deve conter uma pasta resources/assets dentro de src, como no exemplo abaixo:
seu-projeto/
└── src/
├── App.java
├── ai/
├── controller/
├── model/
├── network/
├── view/
│
└── resources/
└── assets/
├── rei_branco.png
├── dama_branca.png
└── ... (todas as 12 imagens .png)
- Abra o projeto em um IDE como VS Code, Eclipse ou IntelliJ IDEA.
- Certifique-se de que o IDE reconheceu o projeto como um projeto Java.
- Localize o arquivo
App.java. - Clique com o botão direito sobre ele e selecione a opção "Run" ou "Run Java".
- Navegue até a pasta
srcdo seu projeto pelo terminal. - Compile todos os arquivos
.javapara a pastabin(crie a pastabinse não existir):javac -d ../bin $(find . -name "*.java") - Copie a pasta
resourcespara dentro da pastabin:cp -r resources ../bin/
- Navegue para a pasta
bine execute a aplicação:cd ../bin java App
- Execute a aplicação. A janela principal aparecerá.
- Vá ao menu "Jogo" na barra superior.
- Escolha um modo de jogo:
- "Novo Jogo (Jogador vs Jogador)": Inicia uma partida local para dois jogadores.
- "Jogar contra IA": Inicia uma partida contra o computador. Você poderá escolher jogar de Brancas ou Pretas.
- "Jogo em Rede...": Permite criar um jogo (Servidor) ou se conectar a um jogo existente (Cliente) na rede local.
- Para os modos com tempo, uma caixa de diálogo permitirá a seleção da duração da partida.
- Use o menu "Jogo" para Salvar, Carregar uma partida ou ver o Ranking.
