Ir ao conteúdo
  • Cadastre-se

Jogo de Xadrez


alexchiele

Posts recomendados

Bom dia , tenho um trabalho da Faculdade que me pede:

Criar un programa que me permita desenhar o movimento de las seguintes pesas de xadrez: torre,cavalo, alfil, rainha y rey. O usuário deve ingressar la posição de la pesas y ol programa devecolocar "*" nos s lugares onde tenha permitido que a peça se mova...tenho issso ate agora , tipo o que me falta e so o tema de posicionar as peças ;;:

#include <cstdlib>

#include <iostream>

#include <conio.h>

using namespace std;

int main(int argc, char *argv[])

{

char m[8][8];

int f, c, x, y;

printf("\n\nDigite la posicion: ");

scanf("%d%d",&x,&y);

system("cls");

printf("\n\nMatriz:\n\n");

for(f=0;f<8;f++)

{

for(c=0;c<8;c++)

{

if(f==c || x+y==f+c || c==y || f==x)

m[f][c] = '*';

else

m[f][c] = ' ';

}

}

for(f=0;f<8;f++)

{

for(c=0;c<8;c++)

{

printf("[%c] ",m[f][c]);

}

printf("\n\n");

}

getch();

return 0;

}

Eu ja consegui para o Alfil, Rainha , Torre , mas para o cavalo e o Rey , não estou conseguindo ... não estou encontrando a pergunta correta para mostrar os movimentos que poderiam ser feitos ...obrigado :rolleyes:

Link para o comentário
Compartilhar em outros sites

Eu não entendi muito bem sua dúvida.

Você precisa criar uma função pra cada tipo de peça. Essa função vai receber a posição da peça que você quer mover e calcular as posições relativas pra onde ela pode se mover.

Por exemplo, o cavalo está na posição [0][2] da matriz, e o usuário seleciona essa peça, então o seu programa chama a função cavalo(), passando essas coordenadas:

void cavalo(int x, int y, matriz *m) {

//...

}

Link para o comentário
Compartilhar em outros sites

Eu não entendi muito bem sua dúvida.

Você precisa criar uma função pra cada tipo de peça. Essa função vai receber a posição da peça que você quer mover e calcular as posições relativas pra onde ela pode se mover.

Por exemplo, o cavalo está na posição [0][2] da matriz, e o usuário seleciona essa peça, então o seu programa chama a função cavalo(), passando essas coordenadas:

void cavalo(int x, int y, matriz *m) {

//...

}

Tipo e assim eu tenho que ingressar a posição para onde quero que esteja a peça , então partir dessa posição mostre os lugares para onde ele poderá se mover ....tipo e cada uma individual , tenho que criar um de cada , por separado , não será necessario montar o jogo , somente mostrar para onde posso mover a peça ....no exemplo que mostrei , não está a linha de comando que pede para o usuário ingressar a posição ...

muito obrigado a atenção:D

Link para o comentário
Compartilhar em outros sites

Bem, então acho que é mais ou menos como eu disse. Tente modular o programa o máximo que puder, pra não ficar muito complicado. Crie uma função que desenha a posição das peças na tela, depois uma função pro movimento de cada tipo de peça (peão, cavalo, torre, etc).

A torre por exemplo só pode se mover na horizontal e vertical, então:


void torre(int x, int y, char m[][]) {
int rx, ry;
for (rx = 0; rx < 8; rx++)
if (m[rx][y] == ' ') //se a posição estiver vazia
m[rx][y] = '*';
for (ry = 0; ry < 8; ry++)
if (m[x][ry] == ' ')
m[x][ry] = '*';
}

Link para o comentário
Compartilhar em outros sites

Bem, então acho que é mais ou menos como eu disse. Tente modular o programa o máximo que puder, pra não ficar muito complicado. Crie uma função que desenha a posição das peças na tela, depois uma função pro movimento de cada tipo de peça (peão, cavalo, torre, etc).

A torre por exemplo só pode se mover na horizontal e vertical, então:


void torre(int x, int y, char m[][]) {
int rx, ry;
for (rx = 0; rx < 8; rx++)
if (m[rx][y] == ' ') //se a posição estiver vazia
m[rx][y] = '*';
for (ry = 0; ry < 8; ry++)
if (m[x][ry] == ' ')
m[x][ry] = '*';
}

valeu , mas o que o professor quer que nos fasamos seria tipo apenas indicar para onde a peça possa se movimentar : exemplo para a torre seria:

#include <cstdlib>

#include <iostream>

#include <conio.h>

using namespace std;

int main(int argc, char *argv[])

{

char m[8][8];

int f,c,pos;

printf("\nIngrese la posicion de la Torre: ");

scanf("%d", &pos);

printf("\nMatriz:\n\n");

for(f=0;f<8;f++)

{

for(c=0;c<8;c++)

{

if(f==pos|| c==pos)

m[f][c] = '*';

else

m[f][c] = ' ';

}

}

for(f=0;f<8;f++)

{

for(c=0;c<8;c++)

{

printf("[%c] ",m[f][c]);

}

printf("\n");

}

getch();

return 0;

}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...