Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
alexchiele

Jogo de Xadrez

Recommended Posts

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:

Editado por alexchiele
Complementando

Compartilhar este post


Link para o post
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) {

//...

}

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 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

    Compartilhar este post


    Link para o post
    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] = '*';
    }

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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;

    }

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Bom agradeço a ajuda ....ja consegui terminar .....pode fechar o típico...valeu

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×