Como criei um jogo de xadrez com Java
Published: 2023-10-25 00:52:27

Durante o curso de Java COMPLETO 2020 Programação Orientada a Objetos + Projetos da Udemy, tive a oportunidade de desenvolver um joguinho de Xadrez utilizando apenas Java, com o uso da IDE do Eclipse. É um jogo simples, que pode ser jogado através de um terminal. Neste projeto eu pude aprender mais sobre OO (em Java), boas práticas de programação, tratamento de erros, versionamento de código, correção de bugs e muita lógica de programação. O código e seus commit foram feitos todos em inglês, para ter uma experiência mais perto de um projeto real.

![Tela Inicial](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nduevnlhf6bloexnseg1.png)

Eu levei 3 dias para concluir todo o projeto, todo o código e explicação detalhada do projeto podem ser conferidas no GitHub. A mecânica do jogo é baseada em linhas (1, 2, 3, 4, 5, 6, 7, 8) e colunas (a, b, c, d, e, f, g, h) e as peças estão são as iniciais das mesmas em inglês (vide tabela).

Peças: Pawn (Peão), Rook (Torre), Knight (Cavalo), Bishop (Bispo), Queen (Rainha) e King (Rei).

Este jogo de xadrez conta com as jogadas especiais (promoção, roque e en passant) e previsão de movimento das peças, marcando o caminho em azul onde a peça pode ir. Como as IDEs possuem fundo preto, as peças pretas foram representadas pela cor amarela (caso deseje rodar o jogo na sua máquina, recomendo utilizar o terminal do git bash, pois sua interface é colorida e poderá ver as peças de cor amarela e os caminhos em azul). Quando uma peça do adversário é capturada, é possível vê-las abaixo do tabuleiro, em captured pieces.

![Tratamento de Erro, o rei amarelo (K) está tentando se colocar em posição de cheque avançando no Bispo branco
Como jogar](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2kvt5nnidayritwtqfua.png)


O jogo sempre começa com as peças brancas (conforme regra oficial do Xadrez). Para escolher uma peça, é necessário digitar suas coordenadas (linha e coluna), similar ao jogo de batalha naval. Por exemplo, para mover o primeiro peão das brancas é só digitar a2 para selecionar o peão e a4 para mover a peça a seu destino.

Caso seja digitado alguma coordenada inválida ou jogada impossível, aparecerá uma mensagem de erro e basta apertar ENTER para recomeçar a jogada. Quando você fizer alguma jogada que gere a situação de Check ou CheckMate, será apresentado uma mensagem na tela avisando sobre isso. No caso do Check, você será obrigado a tirar o seu rei da posição de ameaça, capturando a peça inimiga ou movendo seu rei.

![Rei preto em Cheque!
](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8b0oyvww3cc224rq09j3.png)

É possível realizar as jogadas especiais do Xadrez, como roque (trocar posição do rei e da torre), en passant (capturar o peão inimigo lateralmente) e promoção (levar o seu peão até o final do tabuleiro inimigo, promovendo ele a outra peça). Para ativar o roque, não pode mover o rei nem a torre que seja alvo, depois é só tirar o bispo e o cavalo que estão no meio do caminho e mover o rei em direção a torre, onde o movimento será concluído automaticamente. O promoção é ativado quando seu peão chegar ao final do tabuleiro inimigo, onde aparecerá uma mensagem para que você escolhe qual peça você quer que seu peão vire (Rainha, Bispo, Cavalo ou Torre). Por fim, para ativar o en passant, é só esperar o adversário colocar seu peão ao lado do seu, e, na sua vez, você escolhe o seu peão (que está do lado do peão inimigo) e aparecerá a casa em cima do peão adversário para você realizar a jogada.

Explicando a interface

Na tela do jogo, existem algumas palavras em inglês que mostram o que está acontecendo no jogo, segue uma breve explicação do conteúdo:

![Jogando…](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0q8rq5krlylm1p666zqa.png)

- Captured pieces (Peças Capturadas): o jogo armazena as peças capturadas pelos dois times.
- Turn (Turno): exibe o turno (rodada) em que o jogo está, somando os dois times.
- Waiting player (Esperando Jogador): exibe qual é o jogador a jogar a próxima peça (brancas ou pretas).
- Source (Origem): é a peça no qual o jogador irá mover, escrita em coordenadas. Por exemplo, c8 (linha 8, coluna C).
- Target (Alvo): é o destino, ou seja, o local no qual o jogador irá mover a peça, escrita em coordenadas. Por exemplo, c5 (linha 5, coluna C), a peça irá mover da posição c8 para c5.
- Check (Cheque): gera a situação quando coloca um dos reis em cheque.
- CheckMate (Cheque Mate): o rei ficou encurralado, fim do jogo.