JOGO DE XADREZ EM DELPHI: CAPÍTULO 3 - MOVIMENTO DO BISPO E DA TORRE
Adicionado em 29/01/2023
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.