【AI游戏】基于OpenAI打造自动生成剧情的 Python 游戏

server/2025/1/14 18:34:45/
引言

你是否曾经梦想过成为一名游戏设计师,创造出引人入胜的冒险故事?今天,我将带你使用 OpenAI 的 GPT 模型和 Python 编写一个简单的自动生成剧情游戏。通过这个项目,你可以体验到人工智能在创意写作中的强大能力,并学习如何将 AI 技术应用到游戏开发中。

配套资源:https://download.csdn.net/download/weixin_74773078/90264914


项目概述

我们将创建一个基于文本的冒险游戏,玩家可以通过选择不同的路径来影响剧情的发展。游戏的核心是利用 OpenAI 的 GPT 模型动态生成剧情内容。每次玩家做出选择后,GPT 会根据选择生成一段独特的故事情节。


技术栈
  • Python:用于编写游戏逻辑。

  • OpenAI GPT:用于生成剧情内容。

  • OpenAI API:通过 API 调用 GPT 模型。


实现步骤
1. 安装依赖

首先,确保你已经安装了 OpenAI 的 Python 库。如果没有安装,可以通过以下命令安装:

pip install openai

 

2. 设置 OpenAI API 密钥

在代码中,你需要设置 OpenAI 的 API 密钥。你可以从 OpenAI 官网 获取你的 API 密钥,并将其替换到代码中:

client = OpenAI(api_key="your_openai_api_key_here")
3. 编写剧情生成函数

我们使用 OpenAI 的 chat.completions.create 方法来生成剧情。以下是核心代码:

def generate_story_with_gpt(prompt):try:response = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "你是一个剧情生成器,负责生成有趣的冒险故事。"},{"role": "user", "content": prompt}],max_tokens=200,temperature=0.7)return response.choices[0].message.content.strip()except Exception as e:print(f"生成剧情时出错: {e}")return "剧情生成失败,请稍后再试。"

 

4. 玩家选择机制

玩家可以在游戏中做出选择,例如进入森林、沙漠或城堡。选择会影响生成的剧情:

def player_choice():print("\n你遇到了一个分叉路口,你会选择:")print("1. 向左走,进入幽暗的森林")print("2. 向右走,前往荒凉的沙漠")print("3. 直行,前往古老的城堡")choice = input("请输入你的选择(1、2 或 3):")if choice == "1":return "你决定进入幽暗的森林。"elif choice == "2":return "你决定前往荒凉的沙漠。"elif choice == "3":return "你决定前往古老的城堡。"else:print("无效的选择,默认进入幽暗的森林。")return "你决定进入幽暗的森林。"
5. 主游戏逻辑

游戏的主循环会不断生成新的剧情,直到玩家选择退出:

def main():print("欢迎来到自动生成剧情游戏!")print("在这个游戏中,你的选择将影响剧情的发展。")print("让我们一起开始冒险吧!\n")while True:input("按下回车键继续...")choice_prompt = player_choice()print("\n生成剧情中,请稍候...\n")# 生成初始剧情initial_prompt = "在一个遥远的国度,一位勇敢的冒险者踏上了旅程。" + choice_promptstory = generate_story_with_gpt(initial_prompt)# 打印生成的剧情print("=== 剧情开始 ===")print(story)print("=== 剧情结束 ===\n")# 询问玩家是否继续play_again = input("是否继续生成新的剧情?(y/n): ").lower()if play_again != 'y':print("感谢游玩,再见!")break
示例输出

运行游戏后,你会看到类似以下的输出:

欢迎来到自动生成剧情游戏!
在这个游戏中,你的选择将影响剧情的发展。
让我们一起开始冒险吧!按下回车键继续...你遇到了一个分叉路口,你会选择:
1. 向左走,进入幽暗的森林
2. 向右走,前往荒凉的沙漠
3. 直行,前往古老的城堡
请输入你的选择(1、2 或 3):1生成剧情中,请稍候...=== 剧情开始 ===
你决定进入幽暗的森林。森林中弥漫着浓雾,四周充满了神秘的气息。突然,你听到远处传来低沉的咆哮声。你小心翼翼地向前探索,发现了一只受伤的小鹿。你决定帮助它,并跟随它来到了一片隐藏的湖泊。湖泊中央有一座小岛,岛上闪烁着奇异的光芒。你划船前往小岛,发现了一颗神秘的宝石。这颗宝石似乎拥有无穷的力量……
=== 剧情结束 ===是否继续生成新的剧情?(y/n): y

 持续更新:

  1. 增加更多选择

    可以让玩家选择战斗、逃跑或谈判,进一步丰富剧情。
  2. 记忆上下文

    使用 GPT 的上下文记忆功能,让剧情更加连贯。
  3. 图形化界面

    使用 Pygame 或 Tkinter 为游戏添加图形化界面。

 

 


http://www.ppmy.cn/server/158353.html

相关文章

Autodl安装tensorflow2.10.0记录

首先租用新实例(我选的是3080*2卡),由于基础镜像中没有2.10.0版本,选miniconda3的基础环境 创建虚拟环境:conda create --name xxx python3.8(环境名)激活虚拟环境:conda activate x…

【ArcGIS技巧】如何给CAD里的面注记导入GIS属性表中

前面分享了GIS怎么给田块加密高程点,但是没有分享每块田的高程对应的是哪块田,今天结合土地整理软件GLAND做一期田块的属性怎么放入GIS属性表当中。 1、GLAND数据 杭州阵列软件(GLand)是比较专业的土地整理软件,下载之…

如何让 LLM 使用外部函数 or 工具?Llama-3-Groq-8B-Tool-Use 模型使用详解

2024年7月份,Groq 团队在huggingface上发布了基于Meta llama3两个大小(8b和70b)的开源模型进行微调(官网介绍)的模型(Groq/Llama-3-Groq-8B-Tool-Use 和 Groq/Llama-3-Groq-70B-Tool-Use)&#…

Chromium 132 编译指南 Windows 篇 - 配置核心环境变量 (三)

1. 引言 在之前的 Chromium 编译指南系列文章中,我们已经完成了编译前的准备工作以及 depot_tools 工具的安装与配置。本篇我们将聚焦于 Chromium 编译过程中至关重要的环境变量设置,这些配置是您顺利进行 Chromium 构建的基石。 2. 启用本地编译&…

Jupyter notebook入门教程

一、优点: 1、代码分成小块逐块运行,方便查看中间结果,调试和修改 2、文档和代码结合,比普通的注释好看,使代码的可读性大大提高 3、可以生成多种格式的报告,适合演示使用 二、如何打开 命令行下载jupy…

如何更轻松的对React refs 的理解?都有哪些应用场景?

React refs 的理解与应用 refs 是 React 提供的一种机制,用于直接访问 DOM 元素或 React 组件实例。在 React 中,refs 主要用于获取对 DOM 元素的引用,或访问类组件中的实例方法。在许多情况下,refs 是避免使用传统的 JavaScript…

后端:Spring(IOC、AOP)

文章目录 1. Spring2. IOC 控制反转2-1. 通过配置文件定义Bean2-1-1. 通过set方法来注入Bean2-1-2. 通过构造方法来注入Bean2-1-3. 自动装配2-1-4. 集合注入2-1-5. 数据源对象管理(第三方Bean)2-1-6. 在xml配置文件中加载properties文件的数据(context命名空间)2-1-7. 加载容器…

基于单片机的指纹密码锁

【摘要】 本设计是一款基于单片机的指纹识别电子密码锁系统。该系统以STC89C52单片机作为模块核心同时结合ZFM-60指纹模块实现录取指纹并存储指纹数据的功能,并且通过HS12864-15C液晶显示比对流程及比对结果,该指纹电子密码锁通过直流继电器与发光二极管…