/ / Cách tạo một trò chơi đố tương tác bằng Python

Cách tạo một trò chơi đố tương tác bằng Python

Bế tắc vì một thử thách lập trình đơn giản? Hãy thử viết câu đố của riêng bạn để kiểm tra bạn bè và gia đình; thật dễ dàng bằng Python.


Bạn có thể thực hành học cách lập trình bằng cách tạo các dự án dòng lệnh ngắn trong Python. Một trong những dự án bạn có thể thực hiện là một bài kiểm tra tương tác, nơi bạn có thể hỏi người dùng các loại câu hỏi khác nhau.


Các câu hỏi bạn có thể hỏi bao gồm câu hỏi trắc nghiệm hoặc câu hỏi yêu cầu câu trả lời bằng văn bản. Bạn cũng có thể đặt câu hỏi có câu trả lời đúng thay thế. Bạn thậm chí có thể làm cho chương trình của bạn cung cấp các gợi ý cho người dùng.


Cách tạo tập lệnh Python và thêm câu hỏi trắc nghiệm đầu tiên của bạn

Tạo một tệp Python và thêm vào câu hỏi đầu tiên của bạn. Nếu bạn chưa viết mã bằng Python trước đây, có rất nhiều khóa học và tài nguyên ở đó bạn có thể học Python miễn phí.

  1. Tạo một tệp văn bản mới có tên “InteractiveQuiz.py”.
  2. Mở tệp bằng bất kỳ trình soạn thảo văn bản nào và thêm câu lệnh in đầu tiên của bạn để chào mừng người dùng đến với bài kiểm tra.
    print("Hello, welcome to the geography quiz. Answer the questions as they are presented.")
  3. Đặt câu hỏi đầu tiên cho người dùng. Sử dụng hàm input () để đợi phản hồi của người dùng và lưu trữ thông tin đầu vào của họ vào biến “userInput”.
    print("Question 1. What city is the capital of Australia?")
    userInput = input()
  4. Thêm một điều kiện để kiểm tra xem đầu vào của người dùng có khớp với câu trả lời chính xác hay không. Nếu người dùng trả lời đúng, hãy hiển thị thông báo “đúng” cho họ. Nếu không, hãy hiển thị câu trả lời đúng.
    if (userInput.lower() == "Canberra".lower()):
    print("That is correct!")
    else:
    print("Sorry, the correct answer is Canberra.")
  5. Để chạy câu hỏi của bạn và kiểm tra xem câu hỏi của bạn có hoạt động hay không, hãy mở dòng lệnh và điều hướng đến vị trí của tệp Python của bạn. Ví dụ: nếu bạn lưu trữ tệp của mình trong thư mục có tên Máy tính để bàn, lệnh sẽ là:
    cd Desktop
  6. Chạy lệnh python để thực hiện bài kiểm tra.
    python InteractiveQuiz.py
  7. Cung cấp câu trả lời cho câu hỏi đố vui.

Cách thêm nhiều câu hỏi vào bài kiểm tra

Bạn có thể thêm một số câu hỏi bằng cách lặp lại đoạn mã trên. Tuy nhiên, điều này sẽ làm cho mã của bạn dài không cần thiết và khó cập nhật hơn. Để có cách tiếp cận tốt hơn, hãy lưu trữ thông tin về câu hỏi trong một đối tượng.

  1. Ở đầu tệp Python, hãy thêm một lớp để lưu trữ thông tin về một câu hỏi đố vui. Nếu bạn chưa làm điều này trước đây, bạn có thể tìm hiểu thêm về cách tạo một lớp bằng Python.
    class Question:
    def __init__(self, questionText, answer):
    self.questionText = questionText
    self.answer = answer

    def __repr__(self):
    return '{'+ self.questionText +', '+ self.answer +'}'

  2. Bên dưới lớp, thêm một mảng các đối tượng câu hỏi. Các đối tượng này sẽ lưu trữ văn bản câu hỏi mà bài kiểm tra hiển thị cho người dùng, cùng với câu trả lời đúng.
    quizQuestions = [
    Question("Question 1. What city is the capital of Australia", "Canberra"),
    Question("Question 2. What city is the capital of Japan", "Tokyo"),
    Question("Question 3. How many islands does the Philippines have", "7100")
    ]
  3. Thay thế câu lệnh if hiện có và mã nhập của người dùng. Thay vào đó, hãy sử dụng vòng lặp for để lặp qua mảng quizQuestions. Đối với mỗi câu hỏi, hiển thị câu hỏi và so sánh đầu vào của người dùng với câu trả lời đúng.
    for question in quizQuestions:
    print(f"{question.questionText}?")
    userInput = input()
    if (userInput.lower() == question.answer.lower()):
    print("That is correct!")
    else:
    print(f"Sorry, the correct answer is {question.answer}.")

Cách thêm câu hỏi nhiều lựa chọn

Bạn có thể mở rộng lớp Câu hỏi để chứa các câu hỏi trắc nghiệm.

  1. Sửa đổi lớp Câu hỏi ở đầu tệp. Thêm một thuộc tính tùy chọn được gọi là multipleChoiceOptions.
    class Question:
    def __init__(self, questionText, answer, multipleChoiceOptions=None):
    self.questionText = questionText
    self.answer = answer
    self.multipleChoiceOptions = multipleChoiceOptions

    def __repr__(self):
    return '{'+ self.questionText +', '+ self.answer +', '+ str(self.multipleChoiceOptions) +'}'

  2. Thêm một câu hỏi khác vào mảng quizQuestions. Lưu trữ một số tùy chọn trắc nghiệm cho câu hỏi.
    quizQuestions = [
    Question("Question 1. What city is the capital of Australia", "Canberra"),
    Question("Question 2. What city is the capital of Japan", "Tokyo"),
    Question("Question 3. How many islands does the Philippines have", "7100"),
    Question("Question 4. Which country takes the most land mass", "b", ["(a) United States", "(b) Russia", "(c) Australia", "(d) Antarctica"]),
    ]
  3. Sửa đổi phần của vòng lặp for hiển thị câu hỏi cho người dùng. Nếu các tùy chọn trắc nghiệm tồn tại cho câu hỏi, hãy hiển thị chúng sau câu hỏi và trước khi tìm nạp thông tin đầu vào của người dùng.
    for question in quizQuestions:
    if (question.multipleChoiceOptions != None):
    print(f"{question.questionText}?")
    for option in question.multipleChoiceOptions:
    print(option)
    userInput = input()
    else:
    print(f"{question.questionText}?")
    userInput = input()

    if (userInput.lower() == question.answer.lower()):
    print("That is correct!")
    else:
    print(f"Sorry, the correct answer is {question.answer}.")

Cách thêm câu hỏi có câu trả lời đúng thay thế

Đôi khi có những câu hỏi mà người dùng có thể gõ một phần câu trả lời, nhưng nó vẫn đúng về mặt kỹ thuật.

Ví dụ, một trong những câu hỏi trong bài kiểm tra của bạn có thể là “Nhật Bản nằm ở bán cầu nào?”. Trong trường hợp này, người dùng có thể gõ “Bắc”, “Bắc” hoặc “Bắc bán cầu” vẫn chính xác.

  1. Thêm một thuộc tính tùy chọn khác vào lớp Câu hỏi. Thuộc tính này sẽ chứa bất kỳ câu trả lời đúng thay thế nào có thể có mà người dùng có thể nhập.
    class Question:
    def __init__(self, questionText, answer, multipleChoiceOptions=None, alternateAnswers=None):
    self.questionText = questionText
    self.answer = answer
    self.multipleChoiceOptions = multipleChoiceOptions
    self.alternateAnswers = alternateAnswers

    def __repr__(self):
    return '{'+ self.questionText +', '+ self.answer +', '+ str(self.multipleChoiceOptions) +', '+ str(self.alternateAnswers) +'}'

  2. Thêm một câu hỏi khác vào mảng quizQuestions. Thêm “Bắc bán cầu” là câu trả lời đúng. Thêm “bắc” và “bắc” làm câu trả lời đúng thay thế.
    quizQuestions = [
    Question("Question 5. What hemisphere is Japan located in", "Northern Hemisphere", [], ["north", "northern"]),
    ]
  3. Thêm một điều kiện khác vào câu lệnh if để kiểm tra xem người dùng đã nhập một câu trả lời đúng thay thế hay chưa.
    if (userInput.lower() == question.answer.lower()):
    print("That is correct!")
    elif (question.alternateAnswers != None and userInput.lower() in question.alternateAnswers):
    print("That is correct!")
    else:
    print(f"Sorry, the correct answer is {question.answer}.")

Cách đưa ra gợi ý cho người dùng

Bạn có thể sửa đổi tập lệnh để người dùng không thể chuyển sang giai đoạn tiếp theo cho đến khi họ nhận được câu hỏi hiện tại chính xác. Trong trường hợp này, hãy thêm một biến để đếm số lần người dùng đã nhập câu trả lời sai. Sau ba lần đoán sai, bạn có thể gợi ý cho người dùng.

  1. Sửa đổi lớp Câu hỏi để sử dụng thuộc tính gợi ý mới.
    class Question:
    def __init__(self, questionText, answer, hint=None, multipleChoiceOptions=None, alternateAnswers=None):
    self.questionText = questionText
    self.answer = answer
    self.hint = hint
    self.multipleChoiceOptions = multipleChoiceOptions
    self.alternateAnswers = alternateAnswers

    def __repr__(self):
    return '{'+ self.questionText +', '+ self.answer +', '+ self.hint +', '+ str(self.multipleChoiceOptions) +', '+ str(self.alternateAnswers) +'}'

  2. Thêm gợi ý cho tất cả các câu hỏi trong bài kiểm tra.
    quizQuestions = [
    Question("Question 1. What city is the capital of Australia", "Canberra", "Starts with a C"),
    Question("Question 2. What city is the capital of Japan", "Tokyo", "Starts with a T"),
    Question("Question 3. How many islands does the Philippines have", "7100", "A number between 7000 and 8000"),
    Question("Question 4. Which country takes the most land mass", "b", "The country spans two continents", ["(a) United States", "(b) Russia", "(c) Australia", "(d) Antarctica"]),
    Question("Question 5. What hemisphere is Japan located in", "Northern Hemisphere", "The top half of Earth", [], ["north", "northern"]),
    ]
  3. Loại bỏ các câu lệnh if để kiểm tra xem người dùng có trả lời câu hỏi đúng hay không. Thay thế chúng bằng một vòng lặp while. Vòng lặp while sẽ lặp lại liên tục cho đến khi người dùng nhận được câu trả lời chính xác. Bên trong vòng lặp while, hãy thêm số đếm sẽ hiển thị gợi ý sau khi người dùng trả lời sai ba lần.
    for question in quizQuestions:
    if (question.multipleChoiceOptions != None):
    print(f"{question.questionText}?")
    for option in question.multipleChoiceOptions:
    print(option)
    userInput = input()
    else:
    print(f"{question.questionText}?")
    userInput = input()
    count = 0
    while (userInput.lower() != question.answer.lower()):
    if (question.alternateAnswers != None and userInput.lower() in question.alternateAnswers):
    break;
    count = count + 1
    if (count >= 3):
    print(f"Hint: {question.hint}.")
    userInput = input()
    else:
    print("That is not correct, try again.")
    userInput = input()

    print("That is correct!")

  4. Chạy lại bài kiểm tra của bạn trong dòng lệnh bằng lệnh python.
    python InteractiveQuiz.py
  5. Trả lời câu hỏi cho bài kiểm tra.

Tạo các ứng dụng nhỏ bằng Python

Một trong những dự án bạn có thể thực hiện khi học cách viết mã bằng Python là một bài kiểm tra tương tác. Trong bài kiểm tra, bạn có thể đưa ra các loại câu hỏi khác nhau cho người dùng.

Bạn có thể lưu trữ thông tin về các câu hỏi bài kiểm tra trong một đối tượng, để ngăn bạn lặp lại mã của mình cho mỗi câu hỏi.

Để cải thiện kỹ năng của bạn trong Python, bạn nên thực hành các bài tập và ví dụ khác nhau. Bạn có thể xem các ví dụ Python khác có thể giúp bạn học.

Similar Posts

Leave a Reply

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