No jogo infantil Pedra-Papel-Tesoura, os jogadores escolhem simultaneamente um membro do conjunto { TESOURA, PAPEL, PEDRA }, indicando suas escolhas com sinais de mão: se as duas escolhas forem iguais, o jogo recomeça; se as escolhas diferirem, um jogador vence, conforme a seguinte relação:
· Pedra vence Tesoura;
· 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 jogador.
Respostas
Resposta:
#include <math.h>
#include <setjmp.h>
#include <time.h>
#include <stdio.h>
int main(void) {
int jogador1 = 0, jogada1;
int jogador2 = 0, jogada2;
int i;
for (i = 1; i <= 10; i++) {
do {
printf("Jogada 1 (1=Pedra, 2=Papel, 3=Tesoura): ");
scanf("%d", &jogada1);
} while (jogada1 < 1 || jogada1 > 3);
do {
printf("Jogada 2 (1=Pedra, 2=Papel, 3=Tesoura): ");
scanf("%d", &jogada2);
} while (jogada2 < 1 || jogada2 > 3);
if (jogada1 == jogada2)
printf("Empate\n\n");
else if (jogada1 == 1 && jogada2 == 3 ||
jogada1 == 2 && jogada2 == 1 ||
jogada1 == 3 && jogada2 == 2) {
printf("JOGADOR 1 venceu esta rodada\n\n");
jogador1++;
} else {
printf("JOGADOR 2 venceu esta rodada\n\n");
jogador2++;
}
}
printf("JOGADOR 1 ganhou %d vezes\n", jogador1);
printf("JOGADOR 2 ganhou %d vezes\n", jogador2);
return 0;
}
Explicação: