Ir para conteúdo
Fórum Script Brasil
  • 0

Xadrez em C - Cavalo não funciona


Sandro Generoso

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...