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

引言

你是否曾经梦想过成为一名游戏设计师,创造出引人入胜的冒险故事?今天,我将带你使用 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.rhkb.cn/news/1517.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】从零开始:编写你的第一个Linux进度条小程序

Linux相关知识点可以通过点击以下链接进行学习一起加油!初识指令指令进阶权限管理yum包管理与vim编辑器GCC/G编译器make与Makefile自动化构建GDB调试器与Git版本控制工具 文章目录 一、知识铺垫1.1 回车与换行概念1.2 缓冲区 二、实现简单倒计时三、进度条3.1 Verrs…

【HarmonyOS之旅】基于ArkTS开发(二) -> UI开发二

目录 1 -> 声明式UI开发指导 1.1 -> 开发说明 1.2 -> 创建页面 1.3 -> 修改组件样式 1.4 -> 更新页面内容 2 -> 创建简单视图 2.1 -> 构建Stack布局 2.2 -> 构建Flex布局 2.3 -> 构建食物数据模型 2.4 -> 构建食物列表List布局 2.5 -…

【React】新建React项目

目录 create-react-app基础运用React核心依赖React 核心思想:数据驱动React 采用 MVC体系package.jsonindex.html好书推荐 官方提供了快速构建React 项目的脚手架: create-react-app ,目前使用它安装默认是19版本,我们这里降为18…

分多个AndroidManifest.xml来控制项目编译

使用场景 公司项目和我的项目的AndroidManifest.xml混在一起,我需要区分开来编译观察app运行 1.在app/src/main/ 下写多个AndroidManifest.xml AndroidManifest.own.xmlAndroidManifest.com.xml 2.编写powershell脚本 第一对脚本com-build.ps1和reset-com-mani…

linux进程

课本概念:程序的⼀个执行实例,正在执行的程序等内核观点:担当分配系统资源(CPU时间,内存)的实体。 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合.课本上称之为PCB&…

Hadoop•安装JDK

听说这里是目录哦 创建目录❤️‍🔥上传JDK安装包💗查看JDK是否上传成功💘安装JDK💖配置JDK系统环境变量💓验证JDK是否安装成功💞分发JDK安装目录💌分发系统环境变量文件💝若显示没有…

[Deep Learning] Anaconda+CUDA+CuDNN+Pytorch(GPU)环境配置-2025

文章目录 [Deep Learning] AnacondaCUDACuDNNPytorch(GPU)环境配置-20250. 引子1. 安装Anaconda1.1 安装包下载:1.2 启用安装包安装1.3 配置(系统)环境变量1.4 验证Anaconda是否安装完毕1.5 Anaconda换源 2. 安装CUDACuDNN2.1 判断本机的CUDA版本2.2 下载适合自己CU…

网络原理(四)—— 网络层、数据链路层 与 DNS

网络层 网络层这里重点介绍 IP 协议,首先先解析 IP 数据包: 先介绍第一行: 4位版本号是指使用了哪一个版本的 IP 协议,这里有 IPV4 和 IPV6 两种协议,现在主要使用的是 IPV4 这一个版本号, IPV6 在国内也…

Redis快速入门店铺营业状态设置

Redis简介 Redis是一种基于内存的键值对(K-V)数据库。 这意味着它与MySQL数据库类似,都能够用于存储数据,但两者又有着本质的区别。首先两者存储数据的结构不一样,Redis通过键(key)和值…

Node.js 如何实现文件夹内文件批量重命名

文章目录 一、引言二、Node.js 简介2.1 是什么2.2 优势 三、Node.js 批量重命名原理3.1 涉及的核心模块3.2 关键函数 四、实战步骤4.1 环境搭建4.2 代码实现4.3 代码解释 五、案例分析5.1 场景描述5.2 解决方案 六、可能遇到的问题与解决方法6.1 常见错误6.2 解决方案 七、总结…

MySQL(高级特性篇) 04 章——逻辑架构

一、逻辑架构剖析 (1)服务器处理客户端请求 那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?这里以查询请求为例展示:下面具体展开看一下:Connectors是MySQL服务器之外的客户…

滚动字幕视频怎么制作

在当今的视频创作领域,滚动字幕被广泛应用于各种场景,为视频增添丰富的信息展示和独特的视觉效果。无论是影视剧中的片尾字幕、新闻节目中的资讯滚动,还是综艺节目中的人员与鸣谢信息展示,滚动字幕都发挥着不可或缺的作用。接下来…

源码编译安装httpd 2.4,提供系统服务管理脚本并测试(两种方法实现)

方法一:使用 systemd 服务文件 sudo yum install gcc make autoconf apr-devel apr-util-devel pcre-devel 1.下载源码 wget https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz 2.解压源码 tar -xzf httpd-2.4.46.tar.gz 如果没有安装tar 记得先安装…

计算机视觉算法实战——步态识别(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​​​​​​​​​​​​​​​​ 1. 步态识别简介✨✨ 步态识别(Gait Recognition)是计算机视觉领域中的一个…

2025 年 UI 大屏设计新风向

在科技日新月异的 2025 年,UI 大屏设计领域正经历着深刻的变革。随着技术的不断进步和用户需求的日益多样化,新的设计风向逐渐显现。了解并掌握这些趋势,对于设计师打造出更具吸引力和实用性的 UI 大屏作品至关重要。 一、沉浸式体验设计 如…

Leetcode - 周赛431

目录 一,3411. 最长乘积等价子数组 二,3412. 计算字符串的镜像分数 三,3413. 收集连续 K 个袋子可以获得的最多硬币数量 四,3414. 不重叠区间的最大得分 一,3411. 最长乘积等价子数组 本题数据范围小,直…

深入Android架构(从线程到AIDL)_30 JNI架构原理_Java与C的对接03

目录 2.4 以C结构表达类(class),并创建对象(object) 认识C函数指针 范例 2.5 在C函数里存取对象的属性(attribute) 范例 2.4 以C结构表达类(class),并创建对象(object) 认识C函数指针 struct里不能定义函数本身,但能定义函数指针(func…

论文笔记(四十七)Diffusion policy: Visuomotor policy learning via action diffusion(下)

Diffusion policy: Visuomotor policy learning via action diffusion(下) 文章概括5. 评估5.1 模拟环境和数据集5.2 评估方法论5.3 关键发现5.4 消融研究 6 真实世界评估6.1 真实世界Push-T任务6.2 杯子翻转任务6.3 酱汁倒入和涂抹任务 7. 实际双臂任务…

EasyExcel - 行合并策略(二级列表)

😼前言:博主在工作中又遇到了新的excel导出挑战:需要导出多条文章及其下联合作者的信息,简单的来说是一个二级列表的数据结构。 🕵️‍♂️思路:excel导出实际上是一行一行的记录,再根据条件对其…

软件测试面试题整理

一、人格相关问题 1、自我介绍结构 姓名工作年限简单介绍上家公司的行业主要负责内容个人优势短期内的职业规划应聘该岗位的原因 2、对未来的发展方向怎么看? 没有标准答案,职业规划来讲,可以分为技术层面和管理层面去说,技术…