用python ollama qwen2.5 开发一个AI修仙游戏

用 Python + Ollama (Qwen2.5) 开发一个 AI 修仙游戏

简介

本文将介绍如何使用 Python 和 Ollama (Qwen2.5 模型) 开发一个文字版修仙游戏。这个游戏具有以下特点:

  • 完整的修仙世界观和成长体系
  • 基于 AI 生成的动态剧情和事件
  • 丰富的物品系统(功法、丹药、灵宝等)
  • 社交系统(师门、家族关系等)
  • 存档系统

技术栈

  • Python 3.8+
  • Ollama (Qwen2.5 模型)
  • dataclasses 用于数据结构
  • JSON 用于存档

项目结构

.
├── models.py          # 数据模型
├── ai_interface.py    # AI 接口
├── config.py         # 配置文件
├── event_generator.py # 事件生成器
├── save_manager.py   # 存档管理
├── game.py           # 游戏主逻辑
└── xianxia.py        # 入口文件

1. 数据模型设计

首先我们需要定义游戏中的基本数据结构。创建 models.py:

from dataclasses import dataclass
from typing import List, Dict, Optional@dataclass
class Character:"""角色类"""name: strage: intrelationship: str  # 关系:父/母/师父/朋友等description: str = ""status: str = "在世"cultivation: str = "凡人"death_age: int = 0@dataclass
class Item:"""物品类"""name: strdescription: strtype: str  # 功法/丹药/灵石level: inteffects: Dict[str, int]# ... 其他数据类

2. AI 接口

创建 ai_interface.py 来处理与 Ollama 的交互:

import ollamaclass OllamaAPI:def __init__(self):self.model = "qwen2.5"def generate(self, prompt: str, model: str = None) -> str:try:if model:self.model = modelresponse = ollama.chat(model=self.model,messages=[{'role': 'user', 'content': prompt}])return response['message']['content']except Exception as e:print(f"Ollama 调用错误: {e}")return None

3. 事件生成系统

创建 event_generator.py 来生成游戏事件:

class EventGenerator:def __init__(self, ollama_api: OllamaAPI):self.ollama = ollama_apiself.character_name = ""def generate_yearly_description(self, character_info: Dict) -> str:"""生成年度描述"""prompt = f"""
作为修仙游戏的年度发展生成器,请根据以下角色信息生成一段详细的年度描述:
{character_info}
...
"""return self.ollama.generate(prompt)

4. 存档系统

创建 save_manager.py 来处理游戏存档:

import json
from dataclasses import asdictclass SaveManager:def __init__(self, save_file: str):self.save_file = save_filedef save_game(self, game_state: dict):"""保存游戏状态"""with open(self.save_file, 'w', encoding='utf-8') as f:json.dump(game_state, f, ensure_ascii=False, indent=2)def load_game(self) -> dict:"""加载游戏存档"""try:with open(self.save_file, 'r', encoding='utf-8') as f:return json.load(f)except Exception as e:print(f"加载存档失败: {e}")return None

5. 游戏主逻辑

创建 game.py 实现主要游戏逻辑:

class XianXiaSim:def __init__(self):self.save_manager = SaveManager("xianxia_save.json")self.ollama = OllamaAPI()self.event_generator = EventGenerator(self.ollama)# ... 初始化其他属性def start_game(self):"""开始游戏"""print("欢迎来到修仙模拟器!")# ... 游戏开始逻辑def next_year(self):"""进入下一年"""# ... 年度更新逻辑

6. 游戏特色功能

6.1 灵根觉醒系统

def check_spirit_root(self):"""检测灵根"""print("\n==== 灵根觉醒仪式 ====")# ... 灵根觉醒逻辑

6.2 修炼系统

def generate_path_events(self) -> List[Dict]:"""生成修仙相关事件"""# ... 修炼事件生成逻辑

6.3 物品系统

def add_item(self, item: Item):"""添加物品到背包"""# ... 物品添加逻辑

7. AI 生成内容

游戏中的大部分剧情和事件都由 AI 生成,例如:

  • 年度发展描述
  • 修炼事件
  • 机缘际遇
  • NPC 对话

示例提示词:

prompt = f"""
作为修仙游戏的年度发展生成器,请根据以下角色信息生成一段详细的年度描述。
注意:主角名字必须使用"{self.name}",不要使用其他名字。角色信息:
{json.dumps(character_info, ensure_ascii=False, indent=2)}要求:
1. 描述中必须使用"{self.name}"作为主角名字
2. 不要使用其他名字替代主角
3. 要体现门派生活特色
...
"""

总结

通过结合 Python 和 Ollama (Qwen2.5),我们实现了一个具有以下特点的修仙游戏:

  1. 动态生成的剧情和事件
  2. 完整的修仙世界观
  3. 丰富的游戏系统
  4. 可扩展的架构设计

这个项目展示了如何将 AI 技术应用到游戏开发中,创造出更加丰富和动态的游戏体验。

未来展望

可以考虑添加的功能:

  1. 更复杂的战斗系统
  2. 多分支剧情
  3. 更丰富的社交互动
  4. 更多的修炼体系
  5. 图形界面

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64973.shtml

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

相关文章

Android 常用布局

在Android中,ViewGroup是布局的基类,用于管理和组织其他视图。除了ViewGroup本身,还有一些其他的ViewGroup子类,它们提供了不同的布局和视图管理功能。以下是一些常见的ViewGroup子类: AdapterViewFlipper&#xff1a…

【网络安全】网站常见安全漏洞—服务端漏洞介绍

文章目录 网站常见安全漏洞—服务端漏洞介绍引言1. 第三方组件漏洞什么是第三方组件漏洞?如何防范? 2. SQL 注入什么是SQL注入?如何防范? 3. 命令执行漏洞什么是命令执行漏洞?如何防范? 4. 越权漏洞什么是越…

Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02

在嵌入式开发中,I2C(Inter-Integrated Circuit)是一种常用的串行通信协议,广泛应用于与外设(如 EEPROM、传感器、显示屏等)进行数据交换。AT24C02 是一种常见的 I2C EEPROM 存储器,它提供 2Kbit…

NS3学习——队列管理机制

目录 1.介绍 2.被动式队列管理机制 2.1 优缺点 2.1.1 TCP全局同步现象 3.主动式队列管理机制 3.1 RED算法概述 3.2 RED具体算法 3.2.1 计算队列平均长度 3.2.2 计算丢弃包的概率 1.介绍 由于路由器是基于包交换的设备,为了处理多个数据包同时向同一端口…

HDR视频技术之十一:HEVCH.265 的 HDR 编码方案

前文我们对 HEVC 的 HDR 编码优化技术做了介绍,侧重编码性能的提升。 本章主要阐述 HEVC 中 HDR/WCG 相关的整体编码方案, 包括不同应用场景下的 HEVC 扩展编码技术。 1 背景 HDR 信号一般意味着使用更多比特,一般的 HDR 信号倾向于使用 10…

linux普通用户使用sudo不需要输密码

1.root用户如果没有密码,先给root用户设置密码 sudo passwd root #设置密码 2.修改visudo配置 su #切换到root用户下 sudo visudo #修改visudo配置文件 用户名 ALL(ALL) NOPASSWD: ALL #下图所示处新增一行配置 用户名需要输入自己当前主机的用户名

大语言模型中的Agent;常见的Agent开发工具或框架

大语言模型中的Agent 大语言模型中的Agent是指以大语言模型为核心驱动,具有自主理解、感知、规划、记忆和使用工具等能力,能够自动化执行复杂任务的系统.以下是一些例子: AutoGPT:它相当于一个完整的工具包,可以为各种项目构建和运行自定义AI Agent。使用OpenAI的GPT-4和…

【时间之外】IT人求职和创业应知【74】-运维机器人

目录 OpenAI最强推理模型o3发布,AGI测试能力暴涨 英伟达宣布收购以色列AI初创企业Runai 汤姆猫首款AI机器人产品明日发售 心勿贪,贵知足。 感谢所有打开这个页面的朋友。人生不如意,开越野车去撒野,会害了自己,不如…

Android10 rk3399 以太网接入流程分析

Netd守护进程服务 Netd模块是Android中专门负责网络管理和控制的后台守护进程开发板路径./etc/init/netd.rc service netd /system/bin/netdclass mainsocket dnsproxyd stream 0660 root inetsocket mdns stream 0660 root systemsocket fwmarkd stream 0660 root inetonres…

框架专题:反射

1. 什么是反射? 简单来说,反射是一种程序自省的能力,即在程序运行时动态地获取其结构信息或操作其行为。这包括类、方法、属性等元信息。反射的核心在于让代码变得更加动态化,从而突破静态语言的限制。 以Java为例,反…

Git:查看分支、创建分支、合并分支

一、查看分支 查看的git命令如下: git branch # 列出本地已经存在的分支,并且当前分支会用*标记 git branch -r # 查看远程版本库的分支列表 git branch -a # 查看所有分支列表(包括本地和远程,remotes/开头的表示远程分支&…

【深度学习】论文复现-对论文数据集的一些处理

如何书写伪代码: ref:https://www.bilibili.com/video/BV12D4y1j7Zf/?vd_source3f7ae4b9d3a2d84bf24ff25f3294d107 i14时产出的图片比较合理 import json import os.path from matplotlib.ticker import FuncFormatter import pandas as pd import matplotlib.py…

C#调用WebService的方法

一、前言 在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。 1.创建WebService (1)新建项目——模板选择ASP.NET Web 应用程序 &a…

Java CPU飙升 排查

一、概述 CPU 是整个电脑的核心计算资源,CPU的最小执行单元是 线程; 在现代操作系统中,进程和线程是两种主要的调度单位; 进程是程序中正在运行的一个应用程序,而线程是系统分配处理器时间资源的基本单位。一个进程至少…

Qt creator ,语言家功能缺失解决方法

1、找到工具->外部->配置 2、添加目录,双击命名语言家 3、在语言家目录下,添加工具 双击重命名lupdate,即更新翻译 %{CurrentDocument:Project:QT_INSTALL_BINS}\lupdate%{CurrentDocument:Project:FilePath}%{CurrentDocument:Projec…

12寸半导体厂等保安全的设计思路

等级保护(等保)二级和三级的主要区别在于安全要求的严格程度、所需部署的安全措施和设备、以及对安全事件响应和处理的能力。以下是等保二级和三级之间的一些关键区别: 一、 安全要求严格程度: - 等保二级:适用于需要较高安全保护的信息系统,要求能够防范轻微的恶意攻击…

Docker Compose 配置指南

目录 1. Docker Compose 配置1.1 基本配置结构1.2 docker-compose.yml 的各部分1.3 常用配置选项 2. Docker Compose 使用方法2.1 创建 Docker Compose 配置文件2.2 启动服务2.3 查看容器状态2.4 查看服务日志2.5 停止服务2.6 重新构建服务 3. Docker Compose 常用命令3.1 dock…

Taro小程序开发性能优化实践

我们团队在利用Taro进行秒送频道小程序的同时,一直在探索性能优化的最佳实践。随着需求的不断迭代,项目中的性能问题难免日积月累,逐渐暴露出来影响用户体验。适逢双十一大促,我们趁着这个机会统一进行了Taro性能优化实践&#xf…

手动修改nginx-rtmp模块,让nginx-rtmp-module支持LLHLS

文章目录 1. 背景2. 开发环境搭建2.1 ffmpeg在ubuntu上安装2.2 nginx-rtmp-module在ubuntu上安装2.3 安装vscode环境2. 修改nginx-rtmp-module2.1 主要更新内容2.2 新增配置项2.3 代码更新3. LLHLS验证方法3.1 配置验证3.2 功能验证4. 注意事项5. 已知问题6. 后续计划1. 背景 …

Git的简介

文章目录 一.Git是什么二.核心概念三.工作流程四.Git的优势 下载Git 推荐官网下载 官网地址 一.Git是什么 Git是一个分布式版本控制系统,用于跟踪文件的变化并协调多人对同一项目的开发工作。它就像是一个时光机器,能够记录文件在不同时间点的状态&…