首頁 後端開發 Python教學 用 Python 建立互動式 Mad Libs 遊戲:初學者指南

用 Python 建立互動式 Mad Libs 遊戲:初學者指南

Oct 06, 2024 pm 06:15 PM

你有沒有發現自己在填寫隨機單字以創造一個搞笑荒誕的故事時無法控制地咯咯笑?如果是這樣,您可能已經體驗過 Mad Libs 的樂趣,這是一款自 20 世紀 50 年代以來一直為各個年齡段的人們帶來樂趣的經典文字遊戲。

但是如果我告訴您,這個簡單的遊戲也可以成為您通往令人興奮的 Python 程式設計世界的門戶?

什麼是瘋狂自由?

Building an Interactive Mad Libs Game in Python: A Beginner

Mad Libs 的核心是一款填空說故事遊戲。玩家在不知道故事背景的情況下,會被提示提供特定類型的單字(名詞、動詞、形容詞等)。

Building an Interactive Mad Libs Game in Python: A Beginner

在這裡了解循環:Python 循環:初學者綜合指南

然後將這些單字插入到預先寫好的敘述中,通常會產生一個喜劇和無意義的故事,激發笑聲和創造力。

但 Mad Libs 不僅僅是一種娛樂。當轉化為程式設計專案時,它成為一種強大的教學工具,為有抱負的程式設計師提供一種有趣且引人入勝的方式來學習基本程式設計概念。

設定 Python 環境

首先,請確保您的電腦上安裝了 Python。您可以從Python官方網站下載它。對於這個項目,我們將使用 Python 3.12.7。

安裝 Python 後,開啟您喜歡的文字編輯器或整合開發環境 (IDE)。初學者的熱門選擇包括 IDLE(Python 附帶)、Visual Studio Code 或 PyCharm。

對於這個項目,我將使用 Pycharm。

建構 Mad Libs 遊戲:一步一步

讓我們將 Mad Libs 遊戲分解為可管理的步驟。我們將從基本版本開始,逐步添加更多功能,使其更具互動性和吸引力。

您可以在這裡找到完整的程式碼。

要運行這個遊戲,您需要安裝一些依賴項,其中之一是 colorama 庫。您可以透過執行以下命令來做到這一點:

pip install colorama
登入後複製

導入該專案所需的一些庫,其中包括 ramdom、os colorama


    import random
    import os
    from colorama import init, Fore, Style


登入後複製

接下來我們將使用 init(),它允許我們使用彩色輸出來增強使用者介面,例如以青色顯示歡迎訊息,以紅色顯示錯誤,以及以明亮風格的白色顯示已完成的故事。

  • 建立故事範本

首先,我們將定義故事範本。這將是一個帶有佔位符的字串,其中包含我們希望玩家填寫的單字。下面是一個範例:


    story_template = """
    Once upon a time, in a {adjective} {noun}, there lived a {adjective} {noun}.
    Every day, they would {verb} to the {noun} and {verb} with their {adjective} {noun}.
    One day, something {adjective} happened! They found a {adjective} {noun} that could {verb}!
    From that day on, their life became even more {adjective} and full of {noun}.
    """


登入後複製
  • 收集詞類型

接下來,我們將建立故事所需的單字類型清單:


    word_types = ["adjective", "noun", "adjective", "noun", "verb", "noun", "verb", "adjective", "noun", "adjective", "adjective", "noun", "verb", "adjective", "noun"]


登入後複製
  • 提示玩家輸入單字

現在,讓我們建立一個函數來提示玩家輸入單字:


    def get_word(word_type):
        return input(f"Enter a(n) {word_type}: ")

    def collect_words(word_types):
        return [get_word(word_type) for word_type in word_types]


登入後複製
  • 填入故事

收集到的單字,我們可以填寫我們的故事範本:


    def fill_story(template, words):
        for word in words:
            template = template.replace("{" + word_types[words.index(word)] + "}", word, 1)
        return template


登入後複製
  • 把它們放在一起

讓我們建立一個主函數來運行我們的遊戲:


    def play_mad_libs():
        print("Welcome to Mad Libs!")
        print("I'll ask you for some words to fill in the blanks of our story.")

        words = collect_words(word_types)
        completed_story = fill_story(story_template, words)

        print("\nHere's your Mad Libs story:\n")
        print(completed_story)

    if __name__ == "__main__":
        play_mad_libs()


登入後複製

現在我們有了 Mad Libs 遊戲的基本工作版本!但我們不要就此止步。我們可以讓它變得更具吸引力和用戶友好性。

增強遊戲

新增多個故事範本
為了保持遊戲的趣味性,我們加入多個故事模板:


    import random

    story_templates = [
        # ... (add your original story template here)
        """
        In a {adjective} galaxy far, far away, a {adjective} {noun} embarked on a {adjective} quest.
        Armed with a {adjective} {noun}, they set out to {verb} the evil {noun} and save the {noun}.
        Along the way, they encountered a {adjective} {noun} who taught them to {verb} with great skill.
        In the end, they emerged {adjective} and ready to face any {noun} that came their way.
        """,
        # ... (add more story templates as desired)
    ]

    def choose_random_template():
        return random.choice(story_templates)


登入後複製

實作重玩功能
讓我們加入玩家玩多輪的選項:


    def play_again():
        return input("Would you like to play again? (yes/no): ").lower().startswith('y')

    def mad_libs_game():
        while True:
            template = choose_random_template()
            word_types = extract_word_types(template)
            play_mad_libs(template, word_types)
            if not play_again():
                print("Thanks for playing Mad Libs!")
                break

    def extract_word_types(template):
        return [word.split('}')[0] for word in template.split('{')[1:]]


登入後複製

新增錯誤處理
為了讓我們的遊戲更加健壯,讓我們加入一些錯誤處理:


    def get_word(word_type):
        while True:
            word = input(f"Enter a(n) {word_type}: ").strip()
            if word:
                return word
            print("Oops! You didn't enter anything. Please try again.")


登入後複製

改善使用者體驗
讓我們添加一些顏色和格式以使我們的遊戲更具視覺吸引力:


    from colorama import init, Fore, Style

    init()  # Initialize colorama

    def print_colored(text, color=Fore.WHITE, style=Style.NORMAL):
        print(f"{style}{color}{text}{Style.RESET_ALL}")

    def play_mad_libs(template, word_types):
        print_colored("Welcome to Mad Libs!", Fore.CYAN, Style.BRIGHT)
        print_colored("I'll ask you for some words to fill in the blanks of our story.", Fore.YELLOW)

        words = collect_words(word_types)
        completed_story = fill_story(template, words)

        print_colored("\nHere's your Mad Libs story:\n", Fore.GREEN, Style.BRIGHT)
        print_colored(completed_story, Fore.WHITE, Style.BRIGHT)

**Saving Stories**
Let's give players the option to save their stories:


    import os

    def save_story(story):
        if not os.path.exists("mad_libs_stories"):
            os.makedirs("mad_libs_stories")

        filename = f"mad_libs_stories/story_{len(os.listdir('mad_libs_stories')) + 1}.txt"
        with open(filename, "w") as file:
            file.write(story)

        print_colored(f"Your story has been saved as {filename}", Fore.GREEN)

    def play_mad_libs(template, word_types):
        # ... (previous code)

        if input("Would you like to save this story? (yes/no): ").lower().startswith('y'):
            save_story(completed_story)



登入後複製

運行程式碼

首先,請確保您的系統上安裝了 Python。您可以透過打開終端機並輸入來檢查這一點。

python --version
登入後複製

python3 --version
登入後複製

這應該會傳回您系統上安裝的 Python 版本。
如果安裝了 Python,則應使用 Python 解釋器執行該腳本。而不是跑步。

./first_test.py
登入後複製

你應該運行:

python first_test.py
登入後複製

或如果您專門使用 Python 3:

python3 first_test.py
登入後複製

此外,請確保該檔案具有正確的執行權限。您可以透過以下方式設定:

chmod +x first_test.py<br>
登入後複製




結論

恭喜!您現在已經用 Python 創建了一個互動式、色彩豐富且功能豐富的 Mad Libs 遊戲。此專案向您介紹了幾個重要的程式設計概念:

  1. 字串操作
  2. 使用者輸入與輸出
  3. 函數與模組化程式設計
  4. 列表和列表推導式
  5. 檔案 I/O 操作
  6. 錯誤處理
  7. 第三方函式庫(colorama)
  8. 隨機選擇
  9. While 循環與控制流

透過建立這個遊戲,您不僅創造了一些有趣的東西,而且還為更高級的 Python 專案奠定了堅實的基礎。請記住,成為熟練程式設計師的關鍵是練習和實驗。不要害怕修改這個遊戲,添加新功能,或使用這些概念創建全新的項目!

當您繼續 Python 之旅時,請考慮探索更高級的主題,例如物件導向程式設計、圖形使用者介面 (GUI) 或使用 Django 或 Flask 等框架進行 Web 開發。

您在這裡學到的技能將成為這些更複雜的軟體開發領域的絕佳跳板。

快樂編碼,願你的 Mad Libs 冒險充滿歡笑和學習!

資源

  • 開始使用 Folium
  • Visual Studio Code 的 20 個基本 Python 擴充
  • 使用 Python 進行網頁抓取與資料擷取
  • Python 入門
  • 使用 Folium 和 Python 建立互動式地圖

以上是用 Python 建立互動式 Mad Libs 遊戲:初學者指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? 如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

在Linux終端中使用python --version命令時如何解決權限問題? 在Linux終端中使用python --version命令時如何解決權限問題? Apr 02, 2025 am 06:36 AM

Linux終端中使用python...

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? 如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何繞過Investing.com的反爬蟲機制獲取新聞數據? 如何繞過Investing.com的反爬蟲機制獲取新聞數據? Apr 02, 2025 am 07:03 AM

攻克Investing.com的反爬蟲策略許多人嘗試爬取Investing.com(https://cn.investing.com/news/latest-news)的新聞數據時,常常�...

Python 3.6加載pickle文件報錯ModuleNotFoundError: No module named '__builtin__'怎麼辦? Python 3.6加載pickle文件報錯ModuleNotFoundError: No module named '__builtin__'怎麼辦? Apr 02, 2025 am 06:27 AM

Python3.6環境下加載pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

使用Scapy爬蟲時,管道文件無法寫入的原因是什麼? 使用Scapy爬蟲時,管道文件無法寫入的原因是什麼? Apr 02, 2025 am 06:45 AM

使用Scapy爬蟲時管道文件無法寫入的原因探討在學習和使用Scapy爬蟲進行數據持久化存儲時,可能會遇到管道文�...

See all articles