Skip to content

Smeltier/chess-cli-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

117 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MANUAL DO USUÁRIO - SISTEMA DE XADREZ

1. Visão Geral

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).

2. Requisitos do Sistema

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).

3. Instalação e Execução (Via Scripts)

O projeto inclui scripts de automação na raiz do diretório para facilitar a compilação e execução imediata.

3.1. Execução no Windows

Para ambientes Windows, utilize o arquivo em lote .bat:

  1. Navegue até o diretório raiz do projeto.
  2. Dê um duplo clique no arquivo play.bat ou execute-o via terminal:
play.bat

3.2. Execução no Linux / macOS

Para ambientes Unix-based, utilize o script Shell .sh:

  1. Abra o terminal no diretório raiz do projeto.
  2. Conceda permissão de execução ao script (necessário apenas na primeira vez):
chmod +x play.sh
  1. Execute o script:
./play.sh

4. Configuração da Partida

Ao inicializar o sistema, será necessário configurar os parâmetros da partida:

  1. Definição dos Jogadores: Insira os nomes para o Jogador 1 e Jogador 2 conforme solicitado.
  2. Sorteio de Cores: O sistema solicitará a definição do condutor das peças BRANCAS.
  • Digite 1 para selecionar o Jogador 1.
  • Digite 2 para selecionar o Jogador 2.

5. Interface e Comandos de Jogo

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.

5.1. Realizando Movimentos

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).

5.2. Validação de Regras

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).

6. Movimentos Especiais

O sistema suporta manobras avançadas que requerem entradas específicas ou condições de contexto.

6.1. Roque (Castling)

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) ou e1 c1 (Roque Maior).
  • Comando (Pretas): e8 g8 (Roque Menor) ou e8 c8 (Roque Maior).
  • Nota: A Torre será movida automaticamente pelo sistema se a manobra for válida e o caminho estiver seguro.

6.2. En Passant

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).

6.3. Promoção (Promotion)

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.

7. Estados do Jogo

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.

8. Solução de Problemas e Avançado

8.1. Problema de Fonte (Retângulos/Quadrados)

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.

8.2. Problema de Codificação (Interrogações)

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 65001

8.3. Compilação Manual (Método Alternativo)

Caso 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.Main

No 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

About

Java-based Chess CLI implementing official FIDE rules, with full move validation, check and checkmate detection, special moves support, Unicode board rendering, and MVC architecture.

Topics

Resources

License

Stars

Watchers

Forks

Contributors