iT邦幫忙

0

Day8 GAI 描述一個冒險故事並加入角色風格

gai
  • 分享至 

  • xImage
  •  

角色風格設計

我先設計幾種常見冒險敘事風格:

勇者 (Heroic) → 熱血、堅定,語氣高昂。

盜賊 (Rogue) → 狡黠、輕快,常帶點調侃。

學者 (Scholar) → 冷靜分析,用觀察記錄的口吻。

詩人 (Poet) → 抒情、華麗,經常用比喻。

def narrativize_path(path, features, start_desc="北門入口", goal_desc="南方出口", style="hero"):
"""
把迷宮路徑資料轉成冒險敘事故事,支援不同角色風格

style: "hero", "rogue", "scholar", "poet"
"""
story = []

# 開場風格
openings = {
    "hero": f"我背起劍與盾,從迷宮的{start_desc}邁步而入,使命驅使我勇往直前。",
    "rogue": f"我輕聲哼著小調,悄悄從迷宮的{start_desc}鑽了進去,這裡可藏著不少祕密。",
    "scholar": f"我帶著筆記本,從迷宮的{start_desc}進入,準備仔細記錄這段旅程。",
    "poet": f"迷宮的{start_desc}如同黑暗的咽喉,我踏入其中,心跳彷彿和石壁的低鳴共振。"
}
story.append(openings.get(style, openings["hero"]))

# 主體
for node in path:
    if node in features["deadends"]:
        if style=="hero":
            story.append(f"途中,我誤入死胡同 {node},但我沒有退縮,毅然折返。")
        elif style=="rogue":
            story.append(f"嘿,那條死胡同 {node} 幾乎騙到我,好在我腳程快。")
        elif style=="scholar":
            story.append(f"我在 {node} 發現了一條死路,顯然這是錯誤的方向。")
        elif style=="poet":
            story.append(f"死路 {node} 像是石牆的冷笑,迫使我回頭尋找光明。")

    if node in features["branches"]:
        if style=="hero":
            story.append(f"在 {node} 遇到岔路,我舉劍指引方向,果斷選擇前行。")
        elif style=="rogue":
            story.append(f"在 {node} 的岔口,我笑著拐進右側小徑,感覺這裡有驚喜。")
        elif style=="scholar":
            story.append(f"在 {node} 出現了一個岔路口,通道數量大於二,需謹慎選擇。")
        elif style=="poet":
            story.append(f"在 {node},三條通道如命運的分支,而我隨直覺選擇了其中一條。")

    if node in features["turns"]:
        if style=="hero":
            story.append(f"走到 {node},通道陡然轉折,我緊握武器,迎向未知。")
        elif style=="rogue":
            story.append(f"轉角 {node} 幾乎讓我撞牆,好在我身手敏捷。")
        elif style=="scholar":
            story.append(f"在 {node} 發現明顯的方向改變,路徑呈現轉折。")
        elif style=="poet":
            story.append(f"在 {node},道路如詩句般折轉,指引我走向另一段篇章。")

# 結尾風格
endings = {
    "hero": f"終於,我穿越最後一道轉角,看見前方的光 —— 那是{goal_desc},勝利屬於我!",
    "rogue": f"哈!最後的出口就在眼前 —— {goal_desc},我拍拍灰塵,算是大賺一回。",
    "scholar": f"旅程結束,我在 {goal_desc} 出口完成觀察,這座迷宮的結構已被完整記錄。",
    "poet": f"最終的光自{goal_desc}傾瀉而出,我走出迷宮,如同從夢境回到人間。"
}
story.append(endings.get(style, endings["hero"]))

return "\n".join(story)

使用方法
story_hero = narrativize_path(path, features, style="hero")
story_rogue = narrativize_path(path, features, style="rogue")
story_scholar = narrativize_path(path, features, style="scholar")
story_poet = narrativize_path(path, features, style="poet")

print("=== 勇者版本 ===\n", story_hero)
print("\n=== 盜賊版本 ===\n", story_rogue)
print("\n=== 學者版本 ===\n", story_scholar)
print("\n=== 詩人版本 ===\n", story_poet)

輸出示例(片段)

勇者版本

我背起劍與盾,從迷宮的北門入口邁步而入,使命驅使我勇往直前。
途中,我誤入死胡同 (4, 4),但我沒有退縮,毅然折返。
在 (7, 10),通道陡然轉折,我緊握武器,迎向未知。
終於,我穿越最後一道轉角,看見前方的光 —— 那是南方出口,勝利屬於我!

盜賊版本

我輕聲哼著小調,悄悄從迷宮的北門入口鑽了進去,這裡可藏著不少祕密。
嘿,那條死胡同 (4, 4) 幾乎騙到我,好在我腳程快。
轉角 (7, 10) 幾乎讓我撞牆,好在我身手敏捷。
哈!最後的出口就在眼前 —— 南方出口,我拍拍灰塵,算是大賺一回。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言