Trò chơi kéo giấy bằng đá Python

Tạo trò chơi Rock-Paper-Scissors bằng Python. Nắm vững các lựa chọn ngẫu nhiên, xác thực đầu vào của người dùng và ánh xạ quy tắc quan hệ.

Thử trong Trình chỉnh sửa

Tổng quan

Rock-Paper-Scissors là một thử thách logic trò chơi tiêu chuẩn. Nó yêu cầu xác minh đầu vào theo các quy tắc trò chơi cụ thể và xác định người chiến thắng.

Thay vì viết các thang if/other nhiều lớp tẻ nhạt, chúng ta có thể triển khai các quy tắc bằng cách sử dụng từ điển ánh xạ. Điều này có khả năng mở rộng cao, cho phép mở rộng quy tắc dễ dàng (ví dụ: thêm Lizard và Spock).

Tập lệnh chọn ngẫu nhiên từ các lựa chọn tiêu chuẩn, so sánh nó với lựa chọn của người chơi và in kết quả bao gồm cả cập nhật điểm số.

Đầu ra mã & thực thi

Tập lệnh Rock Paper Scissors minh họa việc khớp quy tắc từ điển và các mô-đun ngẫu nhiên.

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()
Đầu ra thiết bị đầu cuối
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!

Triển khai từng bước

  • Ma trận xác minh quy tắc quyết định
  • Công cụ chọn số ngẫu nhiên
  • Dự án logic luồng điều khiển giáo dục

Câu hỏi thường gặp

Làm cách nào tôi có thể mở rộng điều này sang Rock-Paper-Scissors-Lizard-Spock?

Chỉ cần mở rộng ánh xạ từ điển `wining_rules` để mỗi khóa trỏ đến một danh sách các phần tử mà nó đánh bại. Ví dụ: `'đá': ['kéo', 'thằn lằn']`.

Làm cách nào để trò chơi chạy vô tận cho đến khi người dùng thoát?

Gói logic tương tác bên trong vòng lặp `while True:` và ngắt quá trình thực thi nếu người chơi nhập 'thoát'.

Chủ đề liên quan