/ / Cách tạo trò chơi oẳn tù tì bằng Python

Cách tạo trò chơi oẳn tù tì bằng Python

Tạo trò chơi “Oẳn tù tì” bằng Python là một cách tuyệt vời để nâng cao kỹ năng lập trình của bạn. Bạn có thể tạo trò chơi bằng một tập lệnh Python duy nhất và chơi trò chơi đó trên dòng lệnh.


Trò chơi bắt đầu bằng cách yêu cầu người chơi lựa chọn: “oẳn tù tì”, “giấy” hoặc “kéo”. Sau đó nó đợi họ nhập câu trả lời của họ. Bạn có thể chơi trò chơi với một người chơi “máy tính”, người chơi này sẽ tự động chọn nước đi của mình.

Trò chơi cũng có thể bao gồm nhiều vòng. Vì vậy, ngay cả khi bạn thua vòng đầu tiên, bạn vẫn có thể cố gắng giành được hai phần ba!


Cách thiết lập trò chơi và yêu cầu người chơi di chuyển

Khi trò chơi bắt đầu, chương trình Python sẽ yêu cầu người chơi nhập “oẳn tù tì”, “bao giấy” hoặc “kéo” và nhận phản hồi của người chơi. Để thiết lập một trò chơi mới, hãy bắt đầu bằng cách tạo một tệp Python mới có phần mở rộng .py.

  1. Tạo một tệp mới có tên RockPaperScissors.py.
  2. Mở tệp Python mới bằng bất kỳ trình soạn thảo văn bản nào, chẳng hạn như Notepad++ hoặc Visual Studio Code.
  3. Ở đầu tệp, nhập mô-đun ngẫu nhiên. Bạn sẽ sử dụng điều này sau trong trò chơi để chọn ngẫu nhiên một nước đi cho lượt của máy tính.
     import random 
  4. Trình bày một thông báo cho người chơi, yêu cầu họ nhập oẳn tù tì hoặc kéo.
     userChoice = input("Rock, paper, or scissors? ").lower() 
  5. Khởi tạo một mảng có tên “moveOptions” lưu danh sách các nước đi có sẵn mà bạn hoặc máy tính có thể chơi.
     moveOptions = ['rock', 'paper', 'scissors'] 
  6. Khi người chơi nhập một thông tin đầu vào, hãy xác thực thông tin đó để đảm bảo rằng đó là một trong những nước đi khả dụng. Khi người chơi đã nhập một nước đi hợp lệ, hãy in thông báo xác nhận.
     while (userChoice not in moveOptions):
        userChoice = input("Invalid choice. Must be rock, paper, or scissors: ").lower()

    print("")
    print(f"You chose {userChoice}.")

Cách thực hiện lượt với máy tính và so sánh các bước di chuyển

Sau khi bạn đã nhập nước đi, máy tính sẽ thực hiện lượt của mình bằng cách chọn ngẫu nhiên “oẳn tù tì”, “bao giấy” hoặc “kéo”. Trò chơi sau đó sẽ phải so sánh nước đi của bạn với nước đi của máy tính để xác định ai là người chiến thắng.

  1. Sử dụng mô-đun ngẫu nhiên để máy tính chọn ngẫu nhiên từ danh sách các nước đi có sẵn.
     computerChoice = random.choice(moveOptions)
    print(f"The computer chose {computerChoice}.")
  2. Bạn sẽ cần so sánh nước đi của mình với nước đi của máy tính để xác định ai đã thắng. Bạn có thể làm điều này bằng cách tạo một từ điển mới. Từ điển này bao gồm từng nước đi (ví dụ: “rock”) và nước đi mà nước đó thắng hoặc thua (ví dụ: “rock” đánh bại “kéo” và thua “giấy”).
     moves = {
        'rock': { 'beats': 'scissors', 'losesTo': 'paper' },
        'scissors': { 'beats': 'paper', 'losesTo': 'rock' },
        'paper': { 'beats': 'rock', 'losesTo': 'scissors' },
    }
  3. Sử dụng câu lệnh if trong Python để kiểm tra xem nước đi của bạn và nước đi của máy tính có hòa nhau không. Nếu không, hãy sử dụng từ điển nước đi để so sánh nước đi của người chơi với nước đi của máy tính.
     if userChoice == computerChoice:
        print(f"Both you and the computer chose {userChoice}. It's a tie!")
    else:
        if (moves[userChoice]['beats'] == computerChoice):
            print(f"{userChoice} beats {computerChoice}. You win!")

        if (moves[userChoice]['losesTo'] == computerChoice):
            print(f"{userChoice} loses to {computerChoice}. The computer wins!")

    Ví dụ: nếu bạn chọn “rock”, thì giá trị của các bước di chuyển[userChoice][‘beats’] sẽ là “kéo”. Nếu lựa chọn của máy tính là “kéo”, điều đó có nghĩa là nước đi của bạn đánh bại họ.

Cách giữ điểm giữa người chơi và máy tính giữa nhiều vòng

Bạn cũng có thể thêm các vòng bổ sung, trong đó bạn và máy tính thực hiện ba lượt mỗi vòng.

Khi bạn và máy tính đã chọn oẳn tù tì hoặc kéo, trò chơi sẽ hỏi lại bạn và theo dõi điểm số của bạn. Điểm cho người chơi tăng lên dựa trên người đã thắng vòng cụ thể đó.

  1. Mã hiện tại đại diện cho một vòng quay duy nhất được thực hiện bởi cả người chơi và máy tính. Thêm tất cả mã hiện tại ngoại trừ câu lệnh nhập bên trong hàm turn() mới. Bạn cũng có thể thay đổi thông báo đầu ra cho phù hợp, để nói “Bạn thắng vòng này” thay vì “Bạn thắng”:
     def turn():
        userChoice = input("Rock, paper, or scissors? ").lower()

        moveOptions = ['rock', 'paper', 'scissors']

        while (userChoice not in moveOptions):
            userChoice = input("Invalid choice. Must be rock, paper, or scissors: ").lower()

        print("")
        print(f"You chose {userChoice}.")

        computerChoice = random.choice(moveOptions)
        print(f"The computer chose {computerChoice}.")

        moves = {
        'rock': { 'beats': 'scissors', 'losesTo': 'paper' },
        'scissors': { 'beats': 'paper', 'losesTo': 'rock' },
        'paper': { 'beats': 'rock', 'losesTo': 'scissors' },
        }

        if userChoice == computerChoice:
            print(f"Both you and the computer chose {userChoice}. It's a tie!")
        else:
            if (moves[userChoice]['beats'] == computerChoice):
                print(f"{userChoice} beats {computerChoice}. You win this round!")

            if (moves[userChoice]['losesTo'] == computerChoice):
                print(f"{userChoice} loses to {computerChoice}. The computer wins!")

  2. Người chơi và máy tính mỗi người sẽ thực hiện ba lượt. Thêm một biến toàn cục gọi là “turns” ở đầu tệp.
     turns = 3 
  3. Sau hàm turn(), hãy sử dụng vòng lặp for của Python để lặp lại vòng lặp ba lần. Ở đầu mỗi vòng, in số vòng. Gọi hàm turn() để yêu cầu người chơi và máy tính di chuyển trong vòng đó.
     for i in range(turns):
        print("")
        print(f"--- Round {i+1}: ---")
        turn()
  4. Để theo dõi xem ai thắng mỗi vòng, hãy thêm biến số điểm cho mỗi người chơi ở đầu tệp. Bạn sẽ gán giá trị cho các biến này bên trong hàm turn(), vì vậy hãy đảm bảo sử dụng chúng làm biến toàn cục.
     computerScore = 0
    playerScore = 0

    def turn():
        global computerScore, playerScore

  5. Bên trong hàm turn(), khi cả người chơi và máy tính đã di chuyển, hãy thêm một điểm vào điểm của người chiến thắng. Sửa đổi câu lệnh if để tăng giá trị của biến “playerScore” hoặc “computerScore”.
     if (moves[userChoice]['beats'] == computerChoice):
        print(f"{userChoice} beats {computerChoice}. You win this round!")
        playerScore += 1

    if (moves[userChoice]['losesTo'] == computerChoice):
        print(f"{userChoice} loses to {computerChoice}. The computer wins!")
        computerScore += 1

  6. Khi kết thúc hàm turn(), hãy in bản cập nhật tổng điểm cho mỗi người chơi.
     
    print("")
    print(f"SCOREBOARD | Player's score: {playerScore} | Computer's score: {computerScore}")
  7. Vào cuối trò chơi và sau vòng lặp for lặp lại lượt của người chơi và máy tính, hãy in người chiến thắng cuối cùng.
     print("")

    if (computerScore > playerScore):
        print(f"The computer wins with {computerScore} points!")
    elif (playerScore > computerScore):
        print(f"You win with {playerScore} points!")
    else:
        print(f"It's a tie! You both win with {playerScore} points!")

Cách chạy trò chơi

Để chơi trò chơi, hãy chạy tập lệnh Python bằng thiết bị đầu cuối hoặc dấu nhắc lệnh. Nhập nước đi của bạn và đợi máy tính thực hiện nước đi của chúng. Khi bạn đã hoàn thành ba vòng, chương trình sẽ hiển thị người chiến thắng.

  1. Mở dấu nhắc lệnh hoặc thiết bị đầu cuối và điều hướng đến thư mục mà bạn đang lưu trữ tệp Python của mình.
  2. Sử dụng lệnh python để chạy tập lệnh:
     python RockPaperScissors.py 
    Phần giới thiệu trò chơi Rock Paper Scissors trong dòng lệnh

  3. Chơi trò chơi bằng cách nhập ‘oẳn tù tì’, ‘giấy’ hoặc ‘kéo’.
    Trò chơi Rock Paper Scissors trong dòng lệnh

Học Python bằng cách tạo trò chơi

Tạo các trò chơi đơn giản chẳng hạn như trò chơi “Oẳn tù tì” là một cách tuyệt vời để làm quen với các khái niệm lập trình. Có rất nhiều trò chơi thú vị khác mà bạn có thể tạo bằng Python, chẳng hạn như trò chơi phiêu lưu dựa trên văn bản.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *