No jogo infantil Pedra-Papel-Tesoura, os jogadores escolhem si...
· Papel vence Pedra;
· Tesoura vence Papel.
Escreva um programa em C que implemente esse jogo.
O programa terá dois jogadores (1 e 2) e uma letra ou número para representar as escolhas. Caberá ao aluno definir como deseja representá-las; seguem algumas sugestões:
· 'P' ou 1 para Pedra;
· 'A' ou 2 para Papel;
· 'T' ou 3 para Tesoura;
Em um laço de repetição, faça a leitura da jogada de ambos. Se o valor digitado for inválido, faça o jogador digitar novamente o valor.
Depois dos dois jogadores terem jogado, verifique se houve vencedor ou empate:
· Se os valores digitados forem iguais, escreva: “Empate”;
· Se o valor do Jogador 1 venceu, escreva: “JOGADOR 1 venceu esta rodada”;
· Se o valor do Jogador 2 venceu, escreva: “JOGADOR 2 venceu esta rodada”.
Faça com que esse laço de repetição seja executado por 10 vezes. Após a execução do laço, mostre quantas vezes ganhou cada jogado
1 Resposta
Vamos implementar o jogo Pedra-Papel-Tesoura em C, conforme as instruções fornecidas. Usaremos letras para representar as escolhas dos jogadores: 'P' para Pedra, 'A' para Papel e 'T' para Tesoura. O programa executará o jogo por 10 rodadas e, ao final, mostrará o número de vitórias de cada jogador.
Aqui está o código completo:
```c
#include
#include
#define NUM_RODADAS 10
// Função para ler e validar a jogada de um jogador
char ler_jogada(int jogador) {
char jogada;
while (1) {
printf("Jogador %d, digite sua jogada (P para Pedra, A para Papel, T para Tesoura): ", jogador);
scanf(" %c", &jogada);
jogada = toupper(jogada);
if (jogada == 'P' || jogada == 'A' || jogada == 'T') {
return jogada;
} else {
printf("Jogada inválida. Tente novamente.\\n");
}
}
}
// Função para determinar o vencedor de uma rodada
int determinar_vencedor(char jogada1, char jogada2) {
if (jogada1 == jogada2) {
return 0; // Empate
} else if ((jogada1 == 'P' && jogada2 == 'T') ||
(jogada1 == 'A' && jogada2 == 'P') ||
(jogada1 == 'T' && jogada2 == 'A')) {
return 1; // Jogador 1 vence
} else {
return 2; // Jogador 2 vence
}
}
int main() {
int vitorias_jogador1 = 0;
int vitorias_jogador2 = 0;
for (int i = 0; i < NUM_RODADAS; i++) {
printf("\\nRodada %d\\n", i + 1);
char jogada1 = ler_jogada(1);
char jogada2 = ler_jogada(2);
int resultado = determinar_vencedor(jogada1, jogada2);
if (resultado == 0) {
printf("Empate\\n");
} else if (resultado == 1) {
printf("JOGADOR 1 venceu esta rodada\\n");
vitorias_jogador1++;
} else {
printf("JOGADOR 2 venceu esta rodada\\n");
vitorias_jogador2++;
}
}
printf("\\nResultados finais:\\n");
printf("Jogador 1 venceu %d vezes\\n", vitorias_jogador1);
printf("Jogador 2 venceu %d vezes\\n", vitorias_jogador2);
return 0;
}
```
**Explicação do código:**
1. **Definições e Constantes:**
- `NUM_RODADAS`: Define o número total de rodadas do jogo.
2. **Função `ler_jogada`:**
- Esta função lê a jogada de um jogador, garantindo que a entrada seja válida (`P`, `A`, ou `T`). Em caso de entrada inválida, solicita a jogada novamente.
3. **Função `determinar_vencedor`:**
- Esta função determina o vencedor da rodada comparando as jogadas dos dois jogadores.
- Retorna `0` para empate, `1` para vitória do Jogador 1, e `2` para vitória do Jogador 2.
4. **Função `main`:**
- Inicializa os contadores de vitórias de cada jogador.
- Executa um laço de 10 iterações para as rodadas do jogo.
- Para cada rodada, lê as jogadas dos dois jogadores, determina o vencedor, e atualiza os contadores de vitórias conforme o resultado.
- Após as 10 rodadas, imprime o número total de vitórias de cada jogador.
Este programa garante que o jogo Pedra-Papel-Tesoura seja jogado corretamente, com validação de entrada e contagem das vitórias dos jogadores ao longo de 10 rodadas.
Mais perguntas de Enem
Top Semanal
Top Perguntas
Você tem alguma dúvida?
Faça sua pergunta e receba a resposta de outros estudantes.