Este documento fornece as diretrizes para a execução e operação do sistema de Xadrez baseado em linha de comando (CLI), desenvolvido em linguagem Java. O sistema implementa as regras oficiais da FIDE (Federação Internacional de Xadrez), incluindo validação rigorosa de movimentos, detecção de estados de jogo (xeque/xeque-mate/afogamento) e movimentos especiais, utilizando uma arquitetura orientada a objetos (MVC).
Para a execução adequada do software, o ambiente deve possuir:
- Java Development Kit (JDK): Versão 17 ou superior instalada e configurada nas variáveis de ambiente.
- Terminal de Comando: Bash (Linux/macOS), PowerShell ou CMD (Windows).
O projeto inclui scripts de automação na raiz do diretório para facilitar a compilação e execução imediata.
Para ambientes Windows, utilize o arquivo em lote .bat:
- Navegue até o diretório raiz do projeto.
- Dê um duplo clique no arquivo
play.batou execute-o via terminal:
play.batPara ambientes Unix-based, utilize o script Shell .sh:
- Abra o terminal no diretório raiz do projeto.
- Conceda permissão de execução ao script (necessário apenas na primeira vez):
chmod +x play.sh- Execute o script:
./play.shAo inicializar o sistema, será necessário configurar os parâmetros da partida:
- Definição dos Jogadores: Insira os nomes para o Jogador 1 e Jogador 2 conforme solicitado.
- Sorteio de Cores: O sistema solicitará a definição do condutor das peças BRANCAS.
- Digite
1para selecionar o Jogador 1. - Digite
2para selecionar o Jogador 2.
O tabuleiro é renderizado via console utilizando caracteres Unicode. O sistema de coordenadas segue o padrão internacional:
- Colunas: Letras de a a h.
- Linhas: Números de 1 a 8.
A entrada de dados deve seguir a Notação Algébrica Completa, especificando a coordenada de origem e a coordenada de destino separadas por um espaço.
- Sintaxe:
[origem] [destino] - Exemplo:
e2 e4(Move a peça da casa e2 para a casa e4).
O motor do jogo processa cada entrada verificando:
- A existência de peça na origem e a correspondência de cor com o turno atual.
- A geometria válida de movimento da peça específica.
- A inexistência de obstruções no trajeto (exceto para o Cavalo).
- A legalidade do movimento em relação à segurança do Rei (impossibilidade de auto-xeque).
O sistema suporta manobras avançadas que requerem entradas específicas ou condições de contexto.
Permite o movimento simultâneo do Rei e da Torre.
- Execução: O jogador deve comandar o movimento do Rei por duas casas em direção à Torre escolhida.
- Comando (Brancas):
e1 g1(Roque Menor) oue1 c1(Roque Maior). - Comando (Pretas):
e8 g8(Roque Menor) oue8 c8(Roque Maior). - Nota: A Torre será movida automaticamente pelo sistema se a manobra for válida e o caminho estiver seguro.
Captura especial de peões.
- Condição: Ocorre quando um peão adversário avança duas casas a partir da posição inicial, parando ao lado do seu peão.
- Execução: O jogador deve mover seu peão para a casa diagonal vazia imediatamente atrás do peão adversário.
- Comando: Inserir as coordenadas de origem e da casa de destino (vazia).
Transformação obrigatória de um peão que atinge a última fileira do tabuleiro.
-
Condição: Um peão (Branco na linha 8 ou Preto na linha 1) conclui seu movimento.
-
Execução: O sistema interromperá o fluxo automaticamente e apresentará um menu de seleção.
-
Opções: O jogador deve digitar o número correspondente à peça desejada:
-
1- Rainha (Queen) -
2- Torre (Rook) -
3- Cavalo (Knight) -
4- Bispo (Bishop) -
Resultado: O peão é imediatamente substituído pela peça escolhida na mesma casa.
O sistema fornece feedback em tempo real sobre o estado da partida:
- ALERTA DE XEQUE: Indica que o Rei está sob ataque imediato. O jogador é obrigado a realizar um movimento defensivo.
- ERRO DE MOVIMENTO: Informa tentativas de jogadas ilegais (geometria incorreta, obstrução ou exposição do Rei ao perigo).
- XEQUE-MATE: Ocorre quando o Rei está em xeque e não existem movimentos legais disponíveis. O sistema encerra a execução e declara o vencedor.
- EMPATE POR AFOGAMENTO (STALEMATE): Ocorre quando o jogador que tem a vez de jogar não possui movimentos legais, mas seu Rei não está em xeque. O sistema encerra a partida declarando empate.
Caso as peças apareçam como retângulos vazios (□), o terminal está usando uma fonte que não suporta símbolos de xadrez Unicode.
- Solução: Nas propriedades do terminal (Prompt de Comando ou PowerShell), altere a fonte para MS Gothic, NSimSun ou use um terminal moderno como o Windows Terminal.
Caso as peças apareçam como interrogações (?), o terminal não está interpretando UTF-8 corretamente.
- Solução: Antes de iniciar o jogo, execute o seguinte comando no terminal:
chcp 65001Caso opte por não utilizar os scripts de automação, utilize os comandos abaixo na raiz do projeto para compilar e executar manualmente:
No Linux / macOS:
mkdir -p bin
javac -d bin -encoding UTF-8 $(find src/main/java -name "*.java")
java -Dfile.encoding=UTF-8 -cp bin main.java.com.work.chess.application.MainNo Windows (PowerShell):
if (!(Test-Path bin)) { New-Item -ItemType Directory -Force -Path bin }
Get-ChildItem -Recurse -Filter *.java | ForEach-Object { javac -d bin -encoding UTF-8 $_.FullName }
java -Dfile.encoding=UTF-8 -cp bin main.java.com.work.chess.application.Main