Trò chơi đố vui trong python

Trò chơi đố vui của chúng tôi sẽ đặt câu hỏi cho người chơi mà người chơi phải trả lời bằng câu trả lời đúng. Mỗi câu hỏi sẽ có 3 lần thử. Nếu người chơi không trả lời được câu hỏi trong vòng 3 lần thì trò chơi sẽ chuyển sang câu hỏi tiếp theo và người chơi sẽ không nhận được điểm. Nhưng nếu người chơi đưa ra câu trả lời đúng cho câu hỏi thì anh ta sẽ nhận được 1 điểm. Khi kết thúc trò chơi, tổng số điểm mà người chơi ghi được sẽ được hiển thị

Tôi hy vọng cách hoạt động trừu tượng của trò chơi đã rõ ràng với mọi người, bây giờ chúng ta hãy chuyển sang phần thiết lập dự án

Thiết lập dự án

Trước khi chúng tôi bắt đầu mã hóa dự án này, chúng tôi cần một số câu hỏi và câu trả lời cho trò chơi của chúng tôi

Trong trường hợp của chúng tôi, chúng tôi sẽ sử dụng một số câu hỏi dễ dựa trên siêu anh hùng

Vui lòng sử dụng câu hỏi hoặc câu trả lời của riêng bạn cho trò chơi. Các câu hỏi và câu trả lời của chúng tôi sẽ được lưu trữ trong một tệp python riêng dưới dạng từ điển python

Ở đây nó trông như thế nào

quiz = {
    1 : {
        "question" : "What is the first name of Iron Man?",
        "answer" : "Tony"
    },
    2 : {
        "question" : "Who is called the god of lightning in Avengers?",
        "answer" : "Thor"
    },
    3 : {
        "question" : "Who carries a shield of American flag theme in Avengers?",
        "answer" : "Captain America"
    },
    4 : {
        "question" : "Which avenger is green in color?",
        "answer" : "Hulk"
    },
    5 : {
        "question" : "Which avenger can change it's size?",
        "answer" : "AntMan"
    },
    6 : {
        "question" : "Which Avenger is red in color and has mind stone?",
        "answer" : "Vision"
    }
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bạn có thể tìm hiểu thêm về từ điển python từ đây

Chúng tôi sẽ không thể trình bày nhiều về từ điển trong hướng dẫn này nhưng về cơ bản, nó là một cấu trúc dữ liệu có thể được sử dụng để lưu trữ dữ liệu dưới dạng một biểu mẫu duy nhất, có tổ chức và dễ truy cập

Bạn có thể coi từ điển là danh sách. Nhưng có một số điểm khác biệt chính giữa danh sách và từ điển

  • Danh sách được đặt trong ngoặc đơn
    from questions import quiz
    
    1 trong khi từ điển được đặt trong ngoặc đơn
    from questions import quiz
    
    2
  • Các phần tử riêng lẻ của danh sách được truy cập bằng cách sử dụng
    from questions import quiz
    
    3 của phần tử trong khi các phần tử riêng lẻ của từ điển được truy cập thông qua cặp
    from questions import quiz
    
    4 trong đó
    from questions import quiz
    
    5 là mã định danh và
    from questions import quiz
    
    6 là dữ liệu hoặc giá trị tương ứng của nó

Bạn phải đảm bảo rằng từ điển của bạn phải ở cùng định dạng như trên, nếu không, bạn có thể cần thực hiện các thay đổi cần thiết đối với mã để từ điển hoạt động cho bạn. Vui lòng đặt câu hỏi trên trang xã hội của tôi hoặc đăng câu hỏi của bạn bên dưới trong phần thảo luận/bình luận

Bây giờ tôi cho rằng bạn đã có câu hỏi và câu trả lời sẵn sàng. Đảm bảo rằng tệp python Hỏi & Đáp của bạn nằm trong cùng thư mục với tệp python trò chơi đố vui chính của bạn, chúng tôi sẽ bắt đầu mã hóa chỉ sau một giây

Bây giờ hãy chuyển sang mã hóa

Hãy viết mã

Điều đầu tiên chúng tôi luôn làm là nhập các mô-đun cần thiết vào mã của chúng tôi. May mắn cho dự án này, chúng tôi không cần bất kỳ mô-đun cụ thể nào. Tuy nhiên, chúng tôi vẫn cần nhập tệp python Q&A mà chúng tôi đã tạo ở bước trước

Chúng tôi đã đặt tên cho tệp python Q&A của mình là

from questions import quiz
7. Đây là cách chúng tôi sẽ nhập nó

from questions import quiz

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Chúng tôi đang yêu cầu python nhập từ điển

from questions import quiz
8 chứa câu hỏi và câu trả lời của chúng tôi từ tệp
from questions import quiz
7

Bây giờ hãy đến cấu trúc của trò chơi của chúng tôi

Chú ý hơn. Vì điều này có thể cảm thấy một chút phức tạp

Bây giờ chúng ta sẽ khởi tạo một biến để theo dõi điểm số

score = 0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ là lúc để đặt câu hỏi cho người chơi của chúng tôi

Để làm được điều đó, chúng ta cần tạo một vòng lặp

score = 0
0 sẽ lặp qua tất cả các câu hỏi

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    pass

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ như đã đề cập trước đó, người chơi sẽ có 3 lần thử cho mỗi câu hỏi để có câu trả lời đúng

Hãy tạo một biến để theo dõi các lần thử

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    attempts = 3

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, hãy tạo một vòng lặp

score = 0
1 trong vòng lặp
score = 0
0 của chúng ta, vòng lặp này sẽ chỉ chạy cho đến khi người chơi còn số lần thử

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    attempts = 3
        # this while loop will run until player has more than 0 attempts left
        while attempts > 0:
                pass

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tuyệt vời. Bây giờ, hãy in các câu hỏi và nhận câu trả lời từ người chơi của chúng tôi. Chúng tôi sẽ sử dụng các hàm

score = 0
3 &
score = 0
4 cũ tốt của chúng tôi cho điều đó

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    attempts = 3
        while attempts > 0: 
                print(quiz[question]['question']) # this will print the current interation of for loop
        answer = input("Enter Answer: ")

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Đáng kinh ngạc. Phản hồi của người chơi sẽ được lưu trữ trong biến

score = 0
5

Bây giờ chúng tôi sẽ sử dụng một chức năng sẽ kiểm tra xem câu trả lời do người chơi cung cấp là đúng hay sai. Chúng ta sẽ đặt tên hàm đó là

score = 0
6. Bây giờ, hãy tập trung vào vòng lặp
score = 0
0 của chúng ta và sau đó chúng ta sẽ xem chức năng này hoạt động như thế nào

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    attempts = 3
        while attempts > 0: 
                print(quiz[question]['question']) # this will print the current interation of for loop
        answer = input("Enter Answer: ")
                check = check_ans(question, answer, attempts, score)

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Chúng ta sẽ truyền 4 tham số cho hàm của mình, đó là

  • score = 0
    
    8 - vòng lặp hiện tại của vòng lặp
    score = 0
    
    0
  • score = 0
    
    5 - câu trả lời do người chơi cung cấp
  • # Here remember 'quiz' is our dictionary and 'question' is our temp variable
    for question in quiz:
        pass
    
    1 (tùy chọn) - một tham số tùy chọn về số lần thử còn lại
  • # Here remember 'quiz' is our dictionary and 'question' is our temp variable
    for question in quiz:
        pass
    
    2 (tùy chọn) - một thông số tùy chọn về điểm số hiện tại của người chơi

Chúng tôi sẽ lưu trữ đầu ra của hàm trong biến

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    pass
3

Bây giờ chúng ta sẽ sử dụng câu lệnh

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    pass
4 để tăng điểm nếu câu trả lời do người chơi cung cấp là đúng

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    attempts = 3
        while attempts > 0: 
                print(quiz[question]['question']) # this will print the current interation of for loop
        answer = input("Enter Answer: ")
                check = check_ans(question, answer, attempts, score)
                if check:
            score += 1
            break
        attempts -= 1

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Ở đây nếu câu trả lời của người chơi là đúng thì số điểm sẽ tăng thêm 1 và vòng lặp

score = 0
1 sẽ bị ngắt và vòng lặp
score = 0
0 sẽ chuyển sang câu hỏi tiếp theo

Nhưng nếu câu trả lời sai, thì người chơi sẽ thua một lần và vòng lặp trong khi sẽ tiếp tục cho đến khi người chơi đưa ra câu trả lời đúng hoặc người chơi hết lượt thử

Cuối cùng ở đây, vòng lặp

score = 0
0 của chúng ta kết thúc

Có phải chúng ta đang quên một cái gì đó?

Ồ, chúng tôi đã quên triển khai chức năng

score = 0
6 của mình. Hãy che đậy điều đó một cách nhanh chóng

def check_ans(question, ans, attempts, score):
    if quiz[question]['answer'].lower() == ans.lower():
        return True
    else:
        return False

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Đây là chức năng của chúng tôi. Hãy phá vỡ nó

Ở đây, một câu lệnh

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    pass
4 sẽ so sánh câu trả lời do người chơi cung cấp với câu trả lời đúng trong từ điển của chúng tôi

Nếu câu trả lời là đúng thì nó sẽ trả về

# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    attempts = 3
0 nếu không nó sẽ trả về
# Here remember 'quiz' is our dictionary and 'question' is our temp variable
for question in quiz:
    attempts = 3
1

Hãy thêm một vài câu lệnh in để thông báo cho người chơi nếu câu trả lời của anh ta đúng hay sai

from questions import quiz
0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Ở đây có vẻ tốt phải không

Bạn làm được rồi. Hãy tự hào về bản thân 🤩

Một số ý tưởng để thử

Dưới đây là một số ý tưởng nhanh mà bạn có thể thử với dự án này

  • Biến nó thành nhiều người chơi - Hãy thử sửa đổi trò chơi này để nhiều người chơi có thể thưởng thức trò chơi này cùng một lúc. Bạn có thể làm điều này bằng cách thêm một vòng lặp
    score = 0
    
    0 bổ sung sẽ chứa tên của người chơi và điểm số của mỗi người chơi được lưu trữ riêng. Người chơi có số điểm cao nhất sẽ thắng trò chơi
  • Sử dụng định dạng MCQ - Không chỉ là bài kiểm tra, bạn còn có thể sử dụng nó để tiến hành các bài kiểm tra MCQ. Tất cả những gì bạn phải làm là sửa đổi chức năng in để in nhiều câu trả lời và người chơi sẽ phải đoán câu trả lời đúng
  • Sử dụng API - Sử dụng một API thú vị để tự động tìm nạp câu hỏi từ web, do đó bạn không phải gặp rắc rối khi tự tạo câu hỏi và câu trả lời. Một trong những yêu thích của tôi là API siêu anh hùng

Mã nguồn

Bạn có thể tìm thấy mã nguồn hoàn chỉnh của dự án này tại đây -

mindninjaX/Python-Projects-for-Beginners

Ủng hộ

Cảm ơn bạn rất nhiều vì đã đọc. Tôi hy vọng bạn thấy dự án mới bắt đầu này hữu ích

Nếu bạn thích công việc của tôi, hãy cân nhắc Mua cho tôi một ly cà phê để tôi có thể mang đến nhiều dự án hơn, nhiều bài viết hơn cho bạn

Ngoài ra, nếu bạn có bất kỳ câu hỏi hoặc thắc mắc nào, vui lòng liên hệ với tôi trên Twitter, LinkedIn & GitHub. Hoặc bạn cũng có thể gửi bình luận/thảo luận & tôi sẽ cố gắng hết sức để giúp bạn. D