Jogo Python Rock Paper Scissors

Crie um jogo Pedra-Papel-Tesoura em Python. Domine escolhas aleatórias, validação de entradas do usuário e mapeamentos de regras relacionais.

Experimente no Editor

Visão geral

Rock-Paper-Scissors é um desafio lógico de jogo padrão. Requer a verificação das informações em relação às regras específicas do jogo e a determinação de um vencedor.

Em vez de escrever tediosas escadas if/else de múltiplas camadas, podemos implementar regras usando um dicionário de mapeamento. Isso é altamente escalonável, permitindo fácil expansão de regras (por exemplo, adicionando Lizard e Spock).

O script escolhe aleatoriamente entre as escolhas padrão, compara com a escolha do jogador e imprime os resultados, incluindo atualizações de pontuação.

Saída de código e execução

Um script Rock Paper Scissors ilustrando correspondência de regras de dicionário e módulos aleatórios.

import random

def get_winner(player, computer):
    if player == computer:
        return "tie"
        
    # Dictionary mapping choice -> what it beats
    winning_rules = {
        "rock": "scissors",
        "paper": "rock",
        "scissors": "paper"
    }
    
    if winning_rules[player] == computer:
        return "player"
    return "computer"

def play_game():
    choices = ["rock", "paper", "scissors"]
    # Mocking player selections
    player_moves = ["rock", "paper", "scissors"]
    
    print("Rock, Paper, Scissors Game!")
    
    # Seed generator for deterministic outputs
    random.seed(11)
    
    for player_move in player_moves:
        computer_move = random.choice(choices)
        winner = get_winner(player_move, computer_move)
        
        print(f"\nPlayer chose:   {player_move.capitalize()}")
        print(f"Computer chose: {computer_move.capitalize()}")
        
        if winner == "tie":
            print("Result: It is a Tie!")
        elif winner == "player":
            print("Result: Player Wins!")
        else:
            print("Result: Computer Wins!")

play_game()
Saída terminal
Rock, Paper, Scissors Game!

Player chose:   Rock
Computer chose: Scissors
Result: Player Wins!

Player chose:   Paper
Computer chose: Paper
Result: It is a Tie!

Player chose:   Scissors
Computer chose: Rock
Result: Computer Wins!

Implementação passo a passo

  • Matrizes de verificação de regras decisivas
  • Mecanismos seletores de números aleatórios
  • Projetos educacionais de lógica de fluxo de controle

Perguntas frequentes

Como posso estender isso para Pedra-Papel-Tesoura-Lagarto-Spock?

Simplesmente expanda o mapeamento do dicionário `winning_rules` para que cada chave aponte para uma lista de elementos que ela vence. Por exemplo, `'pedra': ['tesoura', 'lagarto']`.

Como faço para que o jogo rode infinitamente até o usuário sair?

Envolva a lógica de interação dentro de um loop `while True:` e interrompa a execução se o jogador inserir 'quit'.

Tópicos Relacionados