Exercícios Resolvidos de Módulo Random

Ver Teoria

Enunciado

Escreva um programa que implemente o jogo conhecido como pedra, papel, tesoura. Neste jogo, o usuário e o computador escolhem entre pedra, papel ou tesoura. Sabendo que pedra ganha de tesoura, papel ganha de pedra e tesoura ganha de papel, exiba na tela o ganhador: usuário ou computador. Para esta implementação, assuma que o número 0 representa pedra, 1 representa papel e 2 representa tesoura. O programa deve pedir para o usuário entrar com sua escolha, gerar aleatoriamente a escolha do computador, exibir a escolha e indicar o vencedor

Passo 1

Fala comigo, varão de guerra! Aqui a gente tem que simular um jogo de pedra, papel, tesoura. Por algum motivo a gente vai ter que usar números em vez de strings pra checar qual a jogada do usuário. Por que o professor fez isso?! Não sei.

Mas enfim… Apesar de não estar escrito no enunciado, eu gostaria de começar escrevendo pro usuário as instruções do jogo.

Pronto! Antes mesmo de o jogo começar, vai ser exibido na tela essa instrução. Aí, a gente pode perguntar qual a jogada do usuário! Pra isso, vamos usar a função input() e converter a entrada pra inteiro, assim:

E pronto! Agora a gente tem, na variável “usuario”, a jogada do cara. Precisamos criar uma jogada aleatória pra máquina, e é isso que vamos fazer agora.

Passo 2

Olha, a jogada da máquina precisa ser aleatória. Mas, pra gente acessar as funções aleatórias, precisamos antes importar esse módulo lá no início do programa, lembra?

E agora a gente pode usar a função randint pra definir a jogada da máquina de forma aleatória.

Show! Já temos a jogada da máquina. Seria justo exibir pro usuário qual foi a jogada da máquina, então vamos usar um print() pra isso.

E pronto! Só falta a gente descobrir quem venceu, né?!

Passo 3

Olha, pra gente descobrir quem venceu, a gente vai precisar usar alguns if. Primeiro, vamos checar o empate, que é o caso mais fácil de identificar.

E agora a gente precisaria pensar nas combinações necessárias pra vencer o jogo, mas a gente não vai. Porque, se não empatou, a gente só tem duas opções: ou perder ou vencer. Então, a gente pode fazer uma lista mapeando qual jogada vence de qual. Pra isso, vou criar uma lista chamada jogo:

Repara que eu criei uma lista com os valores 2,0,1, nessa ordem. Cara, deixa eu te mostrar como tá a relação entre os índices da lista e os valores que a gente colocou ali.

Reparou que, dessa forma, o número que tá no índice é justamente a jogada que vence o valor? 0 (pedra) vence 2 (tesoura), 1 (papel) vence 0 (pedra) e 2 (tesoura) vence 1 (papel). Assim, a gente consegue com vem mais facilidade verificar quem venceu o jogo.

A lista jogo retorna quem perde pra aquela jogada. Então, jogo[usuario] retorna quem perde pro usuário. Se jogo[usuario] for igual a “maquina”, então a máquina perdeu. Se não, a máquina venceu, sacou?! Malandramente, evitamos várias linhas de código!

E por enquanto é isso, maninho! Te vejo no próximo (NÃO PULA O PRÓXIMO EXERCÍCIO). Valeuuu!

Resposta