JOGO DE XADREZ EM DELPHI: CAPÍTULO 3 - MOVIMENTO DO BISPO E DA TORRE

Adicionado em 29/01/2023

Compartilhar em:

Bem vindo ao terceiro capítulo do tutorial que ensina como criar um jogo de xadrez em Delphi.

Nessa terceira parte, ensinaremos como mover o bispo e a torre no tabuleiro de xadrez.

Vamos continuar utilizando o nosso tabuleiro desenvolvido na primeira parte desse tutorial (Tutorial 1).

MOVIMENTO DO BISPO

O conceito geral para o movimento de peças continua sendo o mesmo mostrado no Capítulo 2 desse tutorial (Tutorial 2).

Como havíamos feito para o cavalo, temos que criar uma função verdadeiro ou falso (booleana) que irá validar o movimento. Nesse caso, temos que verificar se o movimento do bispo é em diagonal.

Para isso declaramos a função CheckMovBispo(NCol, NLinha): Boolean.

Pressionamos Ctrl+Shift+C para declarar a função no corpo do código. Agora, adicionamos o seguinte código a nossa função:

Muito do que está escrito nessa função remete aos mesmos conceitos explicados no tutorial anterior para o movimento do cavalo. Dessa forma, explicaremos de forma breve o que foi feito.

Iniciamos a nossa função com um resultado verdadeiro (True) e fazemos uma verificação de movimentos falsos. Caso um movimento seja falso, o que é verificado pelos condicionais, o resultado será falso (False).

A principal diferença que temos aqui em relação ao movimento do cavalo é que o bispo não pode pular peças e o movimento é em diagonal. O movimento diagonal é verificado com o condicional de variação de linha e coluna. Caso a quantidade de linhas que variou no movimento seja igual ao de colunas, então o movimento é diagonal, do contrario, o movimento do bispo não é validado

A segunda parte é verificar se o bispo não pulou outras peças no movimento diagnoal. Para isso fazemos um loop entre a posição inicial e a posição final do bispo e verificar se existe alguma peça entre essas posições. Se houver, o bispo não pode realizar o movimento.

Para fazer essa verificação, utilizamos o loop FOR. Utilizamos quatro condicionais que nos dirão se o movimento está sendo realizado a sudeste, sudoeste, nordeste e noroeste.

Agora, temos que ativar a validação do movimento. Para isso vamos para nosso procedimento TabuleiroMouseUp. Veja detalhes em: Tutorial 2.

Agora, vamos utilizar o condicional Case para encontrar a peça sendo movida (nesse caso o bispo) e verificar o movimento através da função que acabamos de criar. O código deve ficar assim:

Note que a única coisa que modificamos em relação ao capítulo dois é mudar a variável PodeMover de True para nossa função CheckMovBispo.

Nesse momento, se você executar seu código através do botão Run (ou pressionando F9), você verá que o bispo só se moverá nas diagonais e não pulará peças. Como ainda não introduzimos a opção de comer peças, essa opção ainda está desabilitada.

MOVENDO DA TORRE

O movimento da torre, diferente do bispo, é totalmente horizontal ou vertical. Ou seja, se a torre mudar de linha a coluna não pode mudar, e caso mude de coluna, a linha não pode mudar.

Primeiramente, declaramos a função CheckMovBispo(NCol, NLinha: Integer): Boolean logo abaixo da função que declaramos para o bispo, e pressionamos Ctrl+Shift+C para declarar o código.

Agora, adicionamos o seguinte código a função:

Agora, vamos novamente ao procedimento TabuleiroMouseUp e adicionamos a função a variável PodeMover da Torre, assim como havíamos feito com o Bispo.

Diferente do Bispo, verificamos se a coluna mudou e a linha não e vice-versa. Além disso, novamente adicionamos o loop para verificar se a Torre pulou alguma peça.

Ao executar novamente o software, você poderá ver que a Torre se movimenta tanto na vertical quanto na horizontal e que não pula peças.

No entanto, além de não comer peças, também não adicionamos a condição de que, se a Torre se moveu, não será mais possível realizar Roque. Esse tópico será abordado no movimento do Rei.

O código final desse capítulo deve estar assim:

É importante ressaltar que esse código foi desenvolvido pelos adminstradores desse site, e a utilização desse código para fins comerciais dependerá da autorização prévia dos autores do código.

Por enquanto é isso pessoal. Em nosso próximo tutorial mostraremos como realizar o movimento da rainha e iniciaremos com o movimento do peão. Espero que vocês tenham e gostado, e se tiverem qualquer dúvida, por favor, entrem em contato.

< Capítulo 2 - Capítulo 4 >