Ir ao conteúdo
  • Cadastre-se

C Criação de um código jogo de Damas especifico


Luis_Gustavo59

Posts recomendados

Se alguém conseguir realizar o código ou possuir algumas dicas, estou aceitando, visto que estou com algumas dificuldades, sou iniciante na programação.

A atividade consiste na implementação de uma variação do jogo de damas. Dado um tabuleiro de damas com peças dispostas de uma forma informada e uma sequência de movimentos, sua implementação deverá ser capaz de determinar o placar do jogo. Considere que o jogo terminará ao fim da sequência de ações e que a pontuação será computada com base apenas nas consequências delas, seguindo os seguintes critérios:

1. Captura: o número de peças adversárias capturadas (cada peça capturada vale um ponto).

2. Damas: o número de peças aliadas que alcançaram o fim do tabuleiro e se tornaram damas (cada dama, viva ou morta, vale um ponto).

O programa inicialmente deve ler as entradas contendo informações gerais sobre o tabuleiro do jogo, como dimensões (8x8, 10x10 ou 12x12) e posição das peças, e a sequência de ações. Em seguida, o programa deve imprimir a pontuação de cada jogador (considerando apenas pontos ganhos com base na sequência de ações informadas) e o ganhador (caso haja um).

ENTRADA: A entrada possui várias linhas, onde cada linha tem detalhes sobre o jogo.

● A primeira linha possui um valor inteiro N, que indica o tamanho do tabuleiro em linhas e colunas (X ∈ {8, 10, 12}). ATENÇÃO: o tabuleiro possui casas brancas e pretas e somente as casas pretas são usadas (veja exemplos);

● As próximas N linhas conterão N caracteres cada, sendo que o i-ésimo caractere da jésima linha corresponde a casa na posição aij. Os possíveis valores de aij são: “o” (casa preta vazia), “p” (casa preta com peça preta), “b” (casa preta com peça branca) e “ ” (casa branca). ATENÇÃO: as peças pretas sempre iniciam no topo e as brancas na base do tabuleiro.

● Em seguida serão listadas uma ou mais linhas contendo duas coordenadas x0 y0 xf yf (cada uma representada por um par de números inteiros separados por espaço). A coordenada x0 y0 indica a origem e a coordenada xf yf o destino de uma jogada. Por exemplo: “2 3 3 4” indica que uma peça foi movida da coordenada (2,3) para a coordenada (3,4), em outras palavras, foi movida para a sua diagonal inferior direita. ATENÇÃO: todas as peças, inclusive as damas, só se movem 1 unidade em movimentos normais e 2 unidades em movimentos de captura. Além disso, as peças brancas, que não são damas, somente se movem para cima, as peças pretas, que não são damas, somente se movem para baixo e as damas se movem para qualquer direção. Todas as peças se movem em movimentos diagonais de 1 ou 2 unidades. Nesse trabalho, não iremos considerar capturas sequenciais de maneira que uma peça sem ser dama possa capturar em uma jogada “para trás”. Sendo assim, qualquer jogada “para trás” será considerada inválida. Todas as jogadas inválidas nos termos aqui descritos, devem ser ignoradas.

● Por fim, uma linha contendo 4 números inteiros idênticos sinaliza o término da sequência de ações. Por exemplo: 0 0 0 0. ATENÇÃO: por se tratar de um ação inválida, desconsidere-a (seu intuito é exclusivamente sinalizar o fim da entrada).

SAÍDA: Ao fim da execução, o programa deve imprimir duas informações:

1. O placar da partida, indicando a pontuação do jogador com as peças PRETAS Rp e do jogador com as peças BRANCAS Rb. ATENÇÃO ao uso exclusivo de letras maiúsculas, a ordem do placar (PRETAS na primeira linha e BRANCAS na segunda linha) e ao espaço separando a cor das peças e a pontuação.

2. O resultado da partida, considerando a pontuação: EMPATE (caso Rp = Rb), PRETAS VENCERAM (caso Rp > Rb), PRETAS VENCERAM (caso Rp < Rb).

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • 5 meses depois...

Para comecar a ajudar, preciso saber se c#, ou cpp, se você quer so ideia de algoritmo. Tb seria bom informar se vai ser windows form ou console.

imagino que se você ja tiver pronto o algoritmo do jogo em si, a pontuacao seria resolvida com uma unica classe no codigo. a de movimento, onde no final do movimento que o usuario fazer, ou a peca vai so mexer, não gerando pontos (aea classe retorna 0l, ou vai comer uma peca (ae a classe retorna ponto), ou vai chegar no fim do tabuleiro virando dama ( ae a classe retorna ponto)

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

 

Em 24/11/2021 às 22:22, Luis_Gustavo59 disse:

Se alguém conseguir realizar o código ou possuir algumas dicas, estou aceitando, visto que estou com algumas dificuldades, sou iniciante na programação

 

O algoritmo está praticamente descrito no enunciado. Atente para determinar se um movimento é legal ou não e se gerou captura para contar os pontos. Nada mais. Se uma peça comum se move duas casas deve ter uma adversária no caminho e é a tal captura. Se não tem o movimento é ilegal. É similar com as damas. 

Fora isso é só manter o score e dar o resultado.
 

10 horas atrás, Leotanis Leite Moraes disse:

Para comecar a ajudar, preciso saber se c#, ou cpp, se você quer so ideia de algoritmo. Tb seria bom informar se vai ser windows form ou console.

imagino que se você ja tiver pronto o algoritmo do jogo em si, a pontuacao seria resolvida com uma unica classe no codigo. a de movimento, onde no final do movimento que o usuario fazer, ou a peca vai so mexer, não gerando pontos (aea classe retorna 0l, ou vai comer uma peca (ae a classe retorna ponto), ou vai chegar no fim do tabuleiro virando dama ( ae a classe retorna ponto)

 

A saída está definida no enunciado:

 

Citação

SAÍDA: Ao fim da execução, o programa deve imprimir duas informações:

1. O placar da partida, indicando a pontuação do jogador com as peças PRETAS Rp e do jogador com as peças BRANCAS Rb. ATENÇÃO ao uso exclusivo de letras maiúsculas, a ordem do placar (PRETAS na primeira linha e BRANCAS na segunda linha) e ao espaço separando a cor das peças e a pontuação.

2. O resultado da partida, considerando a pontuação: EMPATE (caso Rp = Rb), PRETAS VENCERAM (caso Rp > Rb), PRETAS VENCERAM (caso Rp < Rb).

 

E a linguagem está definida como C pelo autor.

 

Uma classe só não resolveria o caso. Há o movimento mas ele está num contexto de uma série de movimentos. Poderia considerar uma classe como o jogo e encapsular os movimentos no construtor do jogo já que é um programa simples., mas provavelmente seria mais legível ter uma classe para o jogo e outra para o movimento ao menos.

 

A interface aqui não é relevante ao que parece: basta oferecer os dois resultados pedidos, depois de computar os movimentos.

 

Nem é preciso mostrar o tabuleiro...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!