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

Novamente O Xadrez


djohnny

Pergunta

Olá pessoal boa tarde.

bem aqui estou eu novamente com minhas duvidas sobre o programa de xadrez que desenvolvo.

pois é me adiantei em algumas coisas, porém a poucos dias perdi muita coisa do meu trabalho. agora estou correndo atraz.

Espero que alguém posso me ajudar. obrigado desde já.

Minha duvida é no movimento de uma peça o BISPO,

não estou considerando as outras peças e outras condições no tabuleiro, estou o imaginando sozinho, depois irei definir outras regras.

porém a principal dificuldade esta sendo como calcular o movimento, já que ele se movimenta na diagonal, como saber definir os movimentos possiveis que o bispo pode fazer.

exemplo que na matriz 8 x 8 ele esteja na coluna d e na linha 3, os movimentos que ele pode fazer como irá ficar>???

Se alguém puder me dar uma luz agradeço desde já.

Johnny

desculpe a ignorancia pessoal.

mas estou estudando para passar logo por ela rs

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Se voce garantir que o bispo tenha posicao inicial valida, os movimentos do bispo são sempre da seguinte forma, considerando que ele esta na posicao (x,y):

(x+k, y+k) é para ele se mover na diagonal direita e para baixo

(x-k, y-k) é para ele se mover na diagonal esquerda e para cima

(x+k, y-k) é para ele se mover na diagonal direita e para cima e finalmente

(x-k, y+k) ele se move na diagonal esquerda e para baixo.

Com isso e um simples loop pra avancar o k, voce consegue calcular todas as posicoes para onde o bispo pode andar.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, boa tarde e obrigado a todos pela dica. Valeu Jonas,

agora eu estou tentando e peço qeu de uma olha e me diz o que acha e se tem alguma idéia de deixar isso mais simples ou mais rapido e agil...

pois não sei tudo e sou meio leigo.

ai vai o codigo do movimento do Bispo

int bisppo(int x,int y,int x1,int y1)

{

int a=1,i;

if(abs(x1-x)!=abs(y1-y))

{

a=0;

}

if((x<x1)&&(yx1)&&(y>y1)){

for(i=1;(x-i)>x1;i++){

if(tabuleiro[y-i][x-i]!=0)

a=0;

}

}

else if((x>x1)&&(yx1;i++){

if(tabuleiro[y+i][x-i]!=0)

a=0;

}

}

else if((x<x1)&&(y>y1)){

for(i=1;(y-i)>y1;i++){

if(tabuleiro[y-i][x+i]!=0)

a=0;

}

}

return a;

}

int bispo(int x,int y,int x1,int y1)

{

int a=1,i;

if(abs(x1-x)!=abs(y1-y))

{

a=0;

}

if((x<x1)&&(yx1)&&(y>y1)){

for(i=1;(x-i)>x1;i++){

if(tabuleiro[y-i][x-i]!=0)

a=0;

}

}

else if((x>x1)&&(yx1;i++){

if(tabuleiro[y+i][x-i]!=0)

a=0;

}

}

else if((x<x1)&&(y>y1)){

for(i=1;(y-i)>y1;i++){

if(tabuleiro[y-i][x+i]!=0)

a=0;

}

}

return a;

}

Link para o comentário
Compartilhar em outros sites

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...