Crie um jogo de pedra papel tesoura com Python
Feito por @JackTDC
Traduzido por @vitorvavolizza


Você já se perguntou como construir um jogo com Python? Você sempre quis construir seu próprio jogo, mas não o fez porque achava que era difícil? Bem, hoje vou mostrar como construir um e mostrar o quão simples pode ser!

homepage

Aqui está a demo ao vivo e o código final.

Parte 1: Pré-requisitos

Você deve saber um pouquinho de:

  • Python

Parte 2: Configuração

Configurando seu ambiente de código no Repl.it

O Repl.it é um editor de código online onde você pode construir seu jogo. Você não precisa usar o Repl.it, mas eu sugiro que você faça, pois ele configura tudo e não é necessário instalar nada.

Para começar, vá para repl.it/languages/python. Seu ambiente de programação irá girar em apenas alguns segundos!

Você deve ver algo como o seguinte:

arquivo main.py no Repl.it

Parte 3: Fazendo o jogo

GIF

1) Importando Módulos

Primeiro, precisamos importar o módulo randint. Para saber mais sobre o pacote randint, clique aqui.

Na primeira linha do arquivo main.py, digite from random import randint. Isso importará o módulo randint.

2) Atribuindo valores às variáveis

Vamos fazer uma lista com todas as entradas que um jogador pode inserir. Em seu arquivo main.py, adicione:

t = ["ped", "pap", "tes"]

‘ped’ significa ‘Pedra’, ‘pap’ significa ‘Papel’ e ‘tes’ significa ‘Tesoura’.

Agora, vamos escrever um código para que o jogador possa inserir seu nome.

nome = input("Digite seu nome:")

Agora, queremos dar ao jogador a opção de resetar o jogo.

print("Digite 'resetar' para resetar a pontuação")

Para fazermos um sistema de pontuação, escreveremos o seguinte código:

Voce = 0
PC = 0

Esse é o código até agora:

from random import randint

t = ["ped", "pap", "tes"]

nome = input("Digite seu nome:")
print("Digite 'resetar' para resetar a pontuação")

Voce = 0
PC = 0

3) Mantendo o jogo em um loop

loop

Para isso, usarei um loop while, mas você também pode usar loops for!

Na parte inferior do arquivo main.py, adicione isto:

while True: 

Agora, vamos escrever um código que escolha pedra, papel ou tesoura aleatoriamente para o computador.

computador = t[randint (0,2)]

Em seguida, usaremos input para permitir que o jogador escolha Pedra, Papel ou Tesoura.

jogador = input("Pedra, Papel, Tesoura?(ped, pap, tes)")

Existem 5 possibilidades:

  1. O jogador escolhe Pedra
  2. O jogador escolhe Papel
  3. O jogador escolhe Tesoura
  4. O jogador escreve resetar
  5. A palavra inserida é inválida

4) Produzindo resultados separados para todas as possibilidades

Para facilitar as coisas estarei criando funções para imprimir se o jogador ganhar ou perder. Primeiro vou escrever o seguinte código logo antes do loop while:

mensagem = ""

Isso nos ajudará a imprimir mensagens diferentes, chamando a mesma função.

Também antes do loop while criarei a função que será chamada somente quando o jogador ganhar, para fazer isso usarei o seguinte código:

def ganhou():
  global Voce
  Voce+=1
  print (mensagem)
  print('Computador =', PC, '\n', nome, '=', Voce)

Depois, irei fazer a função para quando o jogador perder.

def perdeu():
  global PC
  PC+=1
  print (mensagem)
  print('Computador =', PC, '\n', nome, '=', Voce)

Agora chamaremos essas funções nos lugares certos.

Em primeiro lugar, vamos supor que o resultado padrão é um empate. Para fazer isso, digite o seguinte código dentro do loop while:

while True:
    computador = t[randint (0,2)]
    jogador = input("Pedra, Papel, Tesoura?(ped, pap, tes)")
    if jogador == computador:
        print("Empate!")
        print('Computador =',PC)
        print(nome,'=',Voce)

Depois, colocamos um pouco de código para cada ação que pode ser tomada.

    elif jogador == "ped":
        if computador == "pap":
            mensagem = "Você perdeu!, Papel cobre Pedra"
            perdeu()
        else:
            mensagem ="Você ganhou!, Pedra destrói Tesoura"
            ganhou()

Já esse, seria o código para papel e tesoura.

    elif jogador == "pap":
        if computador == "tes":
            mensagem = "Você perdeu!, Tesoura corta Papel"
            perdeu()
        else:
            mensagem ="Você ganhou!, Papel cobre Pedra"
            ganhou()
    elif jogador == "tes":
        if computador == "ped":
            mensagem = "Você perdeu!, Pedra destrói Tesoura"
            perdeu()
        else:
            mensagem ="Você ganhou!, Tesoura corta Papel"
            ganhou()

Para a última parte, assumiremos que o jogador quer resetar o jogo ou digitou algo inválido.

    elif jogador == "resetar":
      Voce=1*0
      PC=1*0
      print("A pontuação foi resetada!")
    else:
        print("Essa jogada foi inválida. Selecione uma opção válida!")

O código final ficará assim:

from random import randint

t = ["ped", "pap", "tes"]

nome = input("Digite seu nome:")
print("Digite 'resetar' para resetar a pontuação")

Voce = 0
PC = 0

mensagem = ""

def ganhou():
  global Voce
  Voce+=1
  print (mensagem)
  print('Computador =', PC, '\n', nome, '=', Voce)

def perdeu():
  global PC
  PC+=1
  print (mensagem)
  print('Computador =', PC, '\n', nome, '=', Voce)

while True: 
  computador = t[randint (0,2)]
  jogador = input("Pedra, Papel, Tesoura?(ped, pap, tes)")
  if jogador == computador:
        print("Empate!")
        print('Computador =',PC)
        print(nome,'=',Voce)
  elif jogador == "ped":
        if computador == "pap":
            mensagem = "Você perdeu!, Papel cobre Pedra"
            perdeu()
        else:
            mensagem ="Você ganhou! Pedra destrói Tesoura"
            ganhou()
  elif jogador == "pap":
        if computador == "tes":
            mensagem = "Você perdeu!, Tesoura corta Papel"
            perdeu()
        else:
            mensagem ="Você ganhou!, Papel cobre Pedra"
            ganhou()
  elif jogador == "tes":
        if computador == "ped":
            mensagem = "Você perdeu!, Pedra destrói Tesoura"
            perdeu()
        else:
            mensagem ="Você ganhou!, Tesoura corta Papel"
            ganhou()
  elif jogador == "resetar":
      Voce=1*0
      PC=1*0
      print("A pontuação foi resetada!")
  else:
      print("Essa jogada foi inválida. Selecione uma opção válida!")

5) O Fim

Eeee, parabéns! Você acabou de fazer seu próprio jogo usando Python!

Parabéns

Se você ainda não criou uma conta no repl.it, certifique-se de fazer uma conta para salvar esta criação maravilhosa!

Se você estiver enfrentando dificuldades para se inscrever, assista a esse vídeo (em inglês).

Aqui estão algumas ideais do que você pode fazer:

  • Considere alterar e adicionar mais recursos!
  • Torne-o em um jogo para dois jogadores.
  • Acabe o jogo em 3 turnos, ao invés de rodá-lo infinitamente.
  • Você pode dar ao texto um efeito de máquina de escrever. (Se você não sabe como fazer, assista este vídeo)

Projetos de alguns Hack Clubbers que hackearam esse workshop:

Agora que você terminou de construir este maravilhoso projeto, compartilhe sua bela criação com outras pessoas! Lembre-se, é só mandar a URL do seu projeto!

Você provavelmente conhece as melhores maneiras de entrar em contato com seus amigos e familiares, mas se você quiser compartilhar seu projeto com a comunidade brasileira do Hack Club, não há melhor lugar para fazer isso do que no Discord do Hack Club Brasil.✨

  1. Clique aqui para fazer parte da nossa comunidade!
  2. Depois, poste o link do seu projeto no canal 💡┇criações para compartilhá-lo com todos os Hack Clubbers!

A comunidade te espera!🎉🎉