Olá programadores de C inteligentes, eu sou novo no Fórum, mas preciso de ajuda...
estou a programar um jogo de xadrez em linguagem C, as peças estão funcionando bem em geral, mas há uma peça que está bem teimosa, o CAVALO!
extrai parte do código de forma bem besta(o programa inteiro não é assim), para ver se vocês conseguem ver o problema:
#include <stdio.h>
char xadrez[8][8] =
{
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', 'c', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}
};
int ImprimeTabuleiro()
{
system("cls");
int linha, coluna, repete;
for (linha=0; linha<8; linha++)
{
for(repete=0; repete<3; repete++)
{
for (coluna=0; coluna<8; coluna++)
{
char peca = xadrez[linha][coluna];
char letra = ((linha+coluna)%2==0) ? '\xB2' : ' ';
letra = (repete == 1 && peca != ' ') ? peca : letra;
if((linha+coluna)%2==0)
{
printf("\xB2\%c\xB2", letra);
}
else
{
printf(" %c ", letra);
}
}
printf(" \n");
}
}
}
int movimento(int LinOri, int ColOri, int LinDes, int ColDes)
{
int mover = 0;
char peca;
int Vertical = abs(LinDes - LinOri);
int Horizontal = abs(ColDes - ColOri);
if((peca == 'c') && (Vertical == 2 && Horizontal == 1))
{
mover = 1;
}
if((peca == 'c') && (Vertical == 1 && Horizontal == 2))
{
mover = 1;
}
if(mover == 1)
{
xadrez[LinDes][ColDes] = xadrez[LinOri][ColOri];
xadrez[LinOri][ColOri] = ' ';
return 1;
}
else
{
return 2;
}
}
int main()
{
int LinOri, LinDes, ColOri, ColDes;
while (1) {
ImprimeTabuleiro();
printf("\nCOORDENADAS DE ORIGEM DA PEÇA: (linha, coluna): ");
scanf("%d %d", &LinOri, &ColOri);
printf("\nCOORDENADAS DE DESTINO DA PEÇA: (linha, coluna): ");
scanf("%d %d", &LinDes, &ColDes);
if (movimento(LinOri,ColOri,LinDes,ColDes) != 1)
{
printf("\nERRO: O CAVALO não SE MOVIMENTA ASSIM!");
getch();
}
}
getch();
return 0;
}
Na teoria, se eu digitasse 3 3 e depois 1 2, era para ele se movimentar.
por favor, me digam qual é o problema... Obrigado!