Trò chơi từ điển Python

Ý tưởng cơ bản của dự án này là đọc một tệp chứa các từ và nghĩa của chúng giống như một cuốn từ điển, chọn một từ ngẫu nhiên từ từ điển này, xáo trộn nó và yêu cầu người dùng đoán từ chính xác từ đảo chữ cái của nó và nghĩa gốc của từ đó.

Nhập thư viện

Đối với dự án này, chúng ta sẽ sử dụng các gói json và ngẫu nhiên được tích hợp sẵn trong Python. JSON là viết tắt của Java Script Object Notation, là định dạng tệp được sử dụng để lưu trữ dữ liệu theo cặp khóa-giá trị. Điều này tương tự như cấu trúc dữ liệu 'từ điển' của Python. Gói json cung cấp các phương thức để xử lý dữ liệu đó. Gói ngẫu nhiên thực hiện chính xác những gì tên gợi ý và có các phương thức để tạo số ngẫu nhiên, đưa ra lựa chọn ngẫu nhiên và xáo trộn danh sách, trong số những thứ khác

import json
import random

 

Đang tải dữ liệu

Như đã đề cập trước đó, chúng tôi sẽ cần một tập dữ liệu các từ và nghĩa liên quan của chúng. Bạn có thể tải xuống phiên bản Webster’s Unabridged English Dictionary từ kho lưu trữ này. nhấp vào đây. Như chúng ta có thể thấy, định dạng tệp của dữ liệu này là tệp json và do đó chúng ta sẽ sử dụng hàm load của json package to load this data into a dictionary data structure in Python. 

 

filename = 'dictionary_data.json'
file = open[filename]
data = json.load[file]

Dữ liệu hiện được lưu trữ dưới dạng các cặp khóa-giá trị trong biến có tên là dữ liệu, là một thể hiện của lớp từ điển. Một cặp khóa-giá trị trong từ điển được biểu diễn dưới dạng {key. giá trị}. Trong dữ liệu của chúng tôi, các khóa của từ điển là 102217 từ khác nhau và giá trị của chúng là nghĩa liên quan của các từ tương ứng

 

Chọn một từ ngẫu nhiên

Chúng ta hãy viết một hàm sẽ chọn một từ ngẫu nhiên từ 102217 từ có sẵn. Hàm sẽ nhận hai đối số - dữ liệu và độ dài. Dữ liệu đại diện cho từ điển các từ và độ dài là thứ được lập trình viên xác định để quyết định độ dài tối đa của các từ sẽ được trả về từ hàm này. Trước tiên, chúng ta phải tạo một danh sách tất cả các từ có thể có trong từ điển có thể được truy cập bằng cách sử dụng phương thức phím của lớp từ điển. Sau đó, chúng tôi chọn một từ ngẫu nhiên bằng cách sử dụng chức năng choice và kiểm tra xem độ dài của từ đã chọn có nhỏ hơn độ dài tối đa được chỉ định trong các đối số hay không và độ dài lớn hơn . Vì, điều này có thể mất nhiều lần thử, chúng tôi đặt mã này vào một vòng lặp vô hạn. Khi một từ thỏa mãn các yêu cầu về độ dài được chọn, hàm sẽ trả về từ đó. Không có mã nào bên trong hàm được thực thi sau khi hàm trả về giá trị a. Logic được đưa ra bởi word_prompt hàm được chỉ định bên dưới.

 

def word_prompt[data, length]:
    all_words = list[data.keys[]]
    while True:
        word = random.choice[all_words]
        if len[word]  2:
            return word

 

Xáo trộn từ

Tiếp theo, chúng ta hãy triển khai một hàm sẽ trả về phiên bản được xáo trộn i. e. một đảo chữ của từ mà chúng tôi đã chọn. Đầu tiên, từ được chuyển đổi thành một danh sách các ký tự. Tiếp theo, chúng tôi xáo trộn danh sách các ký tự này bằng cách sử dụng chức năng xáo trộn của ngẫu nhiên package. The shuffled list of letters is converted back into a word using the join để nối một tập hợp các lần lặp lại với nhau. Cuối cùng, chúng tôi chạy mã này trong một vòng lặp vô hạn để kiểm tra xem từ được xáo trộn không bằng chính từ gốc. Nếu điều kiện này là đúng, phép đảo chữ của từ được trả về. Logic này được đưa ra bởi shuffle_word hàm dưới đây.

 

def shuffle_word[word]:
    array = list[word]
    shuffled = word
    while True:
        random.shuffle[array]
        shuffled = ''.join[array]
        if shuffled != word:
            return shuffled

 

Xây dựng trò chơi đảo chữ

Bây giờ hãy chuyển sang phần cuối cùng – xây dựng phiên bản tương tác của trò chơi để người dùng chơi cùng. Chúng tôi sử dụng các chức năng được xác định ở trên để lấy một từ và dạng đảo chữ của nó để đặt câu hỏi cho người chơi. Chúng tôi cũng truy cập nghĩa của từ bằng cách sử dụng từ điển dữ liệu. Chúng tôi sẽ cho người dùng năm lần thử để đoán câu trả lời đúng và để làm được điều đó, chúng tôi đã sử dụng vòng lặp for bắt đầu từ 5 đến 1 giảm dần 1 mỗi vòng lặp. Mỗi vòng lặp, chúng tôi yêu cầu người chơi đoán và kiểm tra xem nó có bằng với từ mong đợi không. Nếu đúng như vậy, người chơi đã đúng và chúng ta có thể thoát khỏi vòng lặp. Nếu không, vòng lặp tiếp tục. Cuối cùng, khi đến lần lặp cuối cùng, chúng tôi đưa ra câu trả lời chính xác cho người dùng. Sau vòng lặp for, chúng tôi cung cấp tùy chọn cho phép người chơi chơi lại trò chơi. Để đảm bảo rằng trò chơi tiếp tục cho đến khi người chơi quyết định dừng lại, chúng tôi đặt mã vào vòng lặp vô hạn và ngắt mã khi người chơi nhập 'n'. Logic được mô tả được triển khai trong mã bên dưới

 

print["Welcome to the Anagram Game!"]
while[True]:
    word = word_prompt[data, 5]
    question = shuffle_word[word]
    meaning = data[word]
    
    question = question.lower[]
    word = word.lower[]
    
    print["\nSolve:", question]
    print["Hint:", meaning]
 
    for i in range[5, 0, -1]:
        print["\nAttempts Left:", i]
        guess = input['Make a guess: '].lower[]
        if guess == word:
            print["Correct!"]
            break
        if i == 1:
            print["\nCorrect Answer:", word]
    
    choice = input["\nContinue? [y/n]: "]
    print['-'*50]
    if choice == 'n':
        print["\nThank you for playing!"]
        break

 

 

Hoàn thành mã

Cuối cùng, mã hoàn chỉnh được cung cấp bên dưới. Tập lệnh của mã được đặt trong phạm vi '__main__', được sử dụng khi đọc từ đầu vào tiêu chuẩn, chẳng hạn như giao diện dòng lệnh. Đó là một thực hành tốt để định kiểu mã theo các tiêu chuẩn thông thường. Bạn có thể tiếp tục và xây dựng dự án này thông qua hệ thống tính điểm hoặc thậm chí là giao diện người dùng đồ họa.

 

import json
import random
 
def word_prompt[data, length]:
    all_words = list[data.keys[]]
    while True:
        word = random.choice[all_words]
        if len[word]  2:
            return word
 
def shuffle_word[word]:
    array = list[word]
    shuffled = word
    while True:
        random.shuffle[array]
        shuffled = ''.join[array]
        if shuffled != word:
            return shuffled
        
if __name__ == "__main__":
    filename = 'dictionary_data.json'
    file = open[filename]
    data = json.load[file]
    
    print["Welcome to the Anagram Game!"]
    while[True]:
        word = word_prompt[data, 5]
        question = shuffle_word[word]
        meaning = data[word]
        
        question = question.lower[]
        word = word.lower[]
        
        print["\nSolve:", question]
        print["Hint:", meaning]
 
        for i in range[5, 0, -1]:
            print["\nAttempts Left:", i]
            guess = input['Make a guess: '].lower[]
            if guess == word:
                print["Correct!"]
                break
            if i == 1:
                print["\nCorrect Answer:", word]
        
        choice = input["\nContinue? [y/n]: "]
        print['-'*50]
        if choice == 'n':
            print["\nThank you for playing!"]
            break

 

Hy vọng bài viết này đã giới thiệu một số khái niệm cơ bản trong Python như câu lệnh điều kiện, câu lệnh lặp và xử lý tệp. Là người mới bắt đầu, chắc chắn bạn sẽ nghi ngờ về những khái niệm như vậy và nếu bạn cần làm rõ bất kỳ điều gì, chúng tôi tại FavTutor luôn sẵn sàng trợ giúp bạn từ các gia sư chuyên gia 24/7. Bắt đầu bằng cách gửi tin nhắn qua cuộc trò chuyện ở dưới cùng bên phải. lập trình vui vẻ

tất-đạt-đa

Là một người đam mê công nghệ, tôi không chỉ đam mê khám phá những cải tiến mới nhất mà còn tin tưởng vào việc phát huy những ứng dụng của nó. Vì vậy, tôi viết về các dự án khác nhau liên quan đến Python, Khoa học dữ liệu và Trí tuệ nhân tạo

Chủ Đề