Sandro Generoso Postado Setembro 16, 2017 Denunciar Share Postado Setembro 16, 2017 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Sandro Generoso
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!
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.