Gra Python Rock Paper Scissors

Utwórz grę Kamień, Papier, Nożyce w Pythonie. Opanuj losowe wybory, sprawdzanie poprawności danych wejściowych użytkownika i mapowanie reguł relacyjnych.

Spróbuj w Edytorze

Przegląd

Kamień-Papier-Nożyce to standardowe wyzwanie logiczne w grze. Wymaga sprawdzenia danych wejściowych pod kątem określonych zasad gry i wyłonienia zwycięzcy.

Zamiast pisać żmudne, wielowarstwowe drabinki if/else, możemy wdrożyć reguły za pomocą słownika mapującego. Jest to wysoce skalowalne, co pozwala na łatwe rozszerzanie reguł (np. dodanie Lizarda i Spocka).

Skrypt wybiera losowo spośród standardowych opcji, porównuje je z wyborem gracza i drukuje wyniki wraz z aktualizacjami wyników.

Dane wyjściowe kodu i wykonania

Skrypt Rock Paper Scissors ilustrujący dopasowywanie reguł słownikowych i moduły losowe.

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()
Wyjście terminala
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!

Wdrażanie krok po kroku

  • Decydujące macierze weryfikacji reguł
  • Silniki selektora liczb losowych
  • Projekty logiki przepływu sterowania w edukacji

Często zadawane pytania

Jak mogę rozszerzyć to na Kamień-Papier-Nożyce-Jaszczurkę-Spocka?

Po prostu rozwiń mapowanie słownika `winning_rules` tak, aby każdy klawisz wskazywał listę elementów, które przewyższa. Na przykład ``kamień': ['nożyczki', 'jaszczurka']`.

Jak sprawić, by gra działała nieskończenie, dopóki użytkownik nie wyjdzie?

Zawiń logikę interakcji w pętlę „while True:” i przerwij wykonanie, jeśli gracz wprowadzi „quit”.

Powiązane tematy