Italo Info


Jogo de xadrez (C++)

Olá! Esta página trata da versão 2.0.6 do jogo de xadrez que produzi. A inteligência artificial tem base no algoritmo MINIMAX e, assim, o jogador computador prevê algumas jogadas, conforme o nível de dificuldade escolhido. Agora, é possível também colocar o computador para jogar contra ele mesmo em, até, níveis de dificuldade diferentes. Mais adiante, o link para download.

Tela de abertura
Tela de abertura
Movimento da rainha
Movimento da rainha
Movimento do cavalo
Movimento do cavalo

Downloads


Como instalar no windows?

Instalar com instalador MSI ou EXE: Baixe o instalador de sua preferência e, após o download, execute o instalador para iniciar a instalação. Feito isto, é só instalar e jogar. Atenção: caso o navegador bloqueie o download, basta ler a mensagem e escolher manter o arquivo baixado.

Instalar versão zipada: Baixe o arquivo compactado em formato .zip na seção downloads windows. E, então, após o download, descompacte o arquivo em algum diretório. Para jogar basta executar o aplicativo de nome "Xadrez.exe".

Atenção: Caso o windows boqueie a execução do arquivo "Xadrez.exe", basta clicar em "Mais informações" e, então, clicar em "Executar assim mesmo".


Como Jogar?

Após a tela inicial ser mostrada, você pode clicar nos níveis de dificuldade mostrados para alterá-los. Isso permite escolher se o primeiro jogador será humano ou se ele deve ser executado com o algoritmo conforme o nível escolhido. Isso também vale para o segundo jogador que, este, não pode ser humano, mas sim, um jogador computador com nível fácil, normal ou difícil de ser vencido.

Após configurado os níveis de dificuldade, basta clicar no botão "Jogar" e, então, começar uma nova partida.

O botão ESQ pode ser pressionado para abandonar a partida corrente e voltar a tela de abertura para configurar novamente os níveis dos algoritmos dos dois jogadores. Ou então, simplesmente, clicar no botão "Jogar" e iniciar outra partida.


Como compilar o código fonte?

Este jogo de xadrez foi construído em C++ e a IDE utilizada foi o Eclipse CDT C++.


Estrutura do projeto
  • Os arquivos cabeçalhos (.h) e fonte (.cpp) estão na pasta "Src".
  • As pastas "img" e "audio" são os recursos que o jogo necessita para executar audio e mostrar as devidas imagens.
  • O arquivo arial.ttf é o arquivo de fonte do windows para as mensagens do jogo serem mostradas com uso de tal fonte.
  • Na raiz do projeto estão as DLLs necessárias para o jogo funcionar.

Compilando e linkando o código fonte

Para compilar e rodar o projeto é necessário configurar primeiramente a ferramenta KIT de desenvolvimento na IDE de sua escolha. Utilizei o MinGW como KIT de desenvolvimento para Windows.

As bibliotecas SDL2, SDL2_ttf, SDL2_mixer, SDL2_image foram utilizadas e necessita ser instalada e configurada na IDE para que o compilador ache os arquivos cabeçalhos dessas bibliotecas e o linker ache as DLLs e Libs necessárias para gerar o executável Windows. Então vamos lá:

Navegue até o site https://libsdl.org e baixe as seguintes bibliotecas:

  • SDL2
  • SDL2_mixer
  • SDL2_image
  • SDL2_ttf

A biblioteca SDL2_ttf pode ser baixada do repositório github abaixo:
https://github.com/libsdl-org/SDL_ttf

Importante, você já deve ter também instalado o MinGW ou equivalente em seu Windows!

Agora, verifique se seu MinGW compila para arquitetura x86_64 ou i686 e, ao descompactar as bibliotecas baixadas, copie o conteúdo da pasta equivalente a arquitetura de compilação do MinGW para a pasta raiz do MinGW ou para uma pasta separada. Eu particularmente preferi descompactar em C:\SDL2. Assim, haverá a seguinte estrutura de pastas após a instalação:

	C:\SDL2\bin
	C:\SDL2\include
	C:\SDL2\lib
	C:\SDL2\share

Se copiar para pasta do MinGW, estas pastas serão mescladas com as já existentes na instalação do MinGW. Logo, se o MinGW estiver em: C:\MinGW. A estrutura continuará como abaixo:

	C:\MinGW\bin
	C:\MinGW\include
	C:\MinGW\lib
	C:\MinGW\share

Agora chegou a hora de configurar o compilador e o linker. Vamos assumir que as bibliotecas do SDL2 estão em: C:\SDL2. Vamos lá!

  1. Adicione o caminho de includes: "C:\SDL2\includes" ao compilador C++
  2. Adicione o caminho das libs: "C:\SDL2\lib" ao linker
  3. Adicione os seguintes argumentos para o linker: -lmingw32 -lSDL2main -lSDL2 -lSDL2_mixer -lSDL2_image -lSDL2_ttf -mwindows

Não se esqueça de configurar sua IDE para encontrar o código fonte na pasta Src. Ou, então, copie o conteúdo da pasta para a raiz do projeto se preferir.

Agora é só compilar e rodar!


Como jogar?

Para efetuar uma jogada basta clicar na peça que deseja mover e aparecerão as possíveis posições que você pode mover a peça. Então, basta clicar na posição escolhida. Caso queira desligar a música de fundo, basta clicar no ícone de áudio localizado encima do tabuleiro.

Para abandonar uma partida em execução, basta pressionar a tecla ESC.


Um pouco sobre um jogo de xadrez

Para construir um jogo de xadrez, é necessário criar métodos de verificação das jogadas possíveis para cada peça. Por exemplo: o rei pode se movimentar para qualquer posição vizinha, desde que, a posição não esteja ocupada por uma peca da mesma cor do rei e o rei não esteja em xeque ou, se estiver em xeque, a jogada tem que tirar o rei da situação de xeque.

Outra função necessária em um jogo de xadrez é um método de verificar se, de acordo com o estado atual do jogo, algum jogador venceu ou houve empate. Para isso, é necessário, também, que o método verifique se houve xequemate ou se o rei não está em xeque e não existe nenhuma jogada possível para qualquer peça da mesma cor do rei, o que significa que houve empate.


Audio e imagens

As imagens das peças foram produzidas a partir de uma imagem baixada da internet e os arquivos de audio também foram baixados da internet.


A inteligência artificial

O algoritmo de inteligência artificial simbólica utilizado tem base na idéia do MINIMAX. Isto é, busca-se maximizar os ganhos e minimizar as perdas conforme as previsões de jogadas futuras.


O nível de dificuldade

O nível de dificuldade influencia no número de jogadas que o computador prevê. No nível fácil, o jogador computador prevê duas jogadas. A primeira, do computador, e a segunda, do jogador. No nível normal, são previstas 3 jogadas. A do computador, a do jogador e outra do computador. No nível difícil, são previstas quatro jogadas na seguinte ortem: Computador, Jogador, Computador, Jogador.


Finalizando...

Não entrei em mais detalhes do desenvolvimento do jogo de xadrez porque não é de fácil ensino. Isto é, para ensinar sobre como produzir um jogo de tabuleiro, é mais adequado utilizar o jogo da velha como exemplo, do modo que fiz quando escrevi sobre jogos eletrônicos aqui.

É isso pessoal, espere que baixem e testem o jogo de xadrez e que gostem do jogo...

Até o próximo!