宝可梦战斗模拟器

一款功能全面的宝可梦战斗模拟器和数据服务器,提供交互式战斗模拟、多种战斗模式、高级战斗引擎和完整的宝可梦图鉴。

  • by RuDi07R
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 RuDi07R/Pokemon-MCP_server

使用说明

口袋妖怪战斗模拟器和MCP服务器

这个项目是一个功能齐全的口袋妖怪战斗模拟器和数据服务器。它使用a 模型上下文协议(MCP) 兼容的FastAPI后端,提供全面的口袋妖怪数据和强大的战斗引擎。用户界面是一个使用Streamlit构建的交互式多页web应用程序。


⭐ 特性

  • 交互式战斗模拟器: 一个功能齐全的用户界面,可以选择《口袋妖怪》,并通过视觉反馈观看逐回合战斗的展开。
  • 多种作战模式: 支持 一对一, 随机,战略 3v3团队 战斗。
  • 先进战斗引擎: 实现Pokemon的核心机制,包括:
    • 类型有效性和损伤计算
    • 基于速度统计的转弯顺序
    • 5+状态效果(中毒、烧伤、瘫痪、睡眠、意识模糊)
    • AI移动选择(选择超高效或高功率移动)
  • 全功能Pokédex: 一个可搜索的页面,可以查看898多只宝可梦的详细数据、统计数据和官方艺术品。
  • 战略举措建议: 一种分析匹配并为攻击者推荐最佳策略的工具。
  • 自定义口袋妖怪支持: 包括三个自定义口袋妖怪(Scopely,EA体育和Zynga)具有独特的统计数据、能力和本地图像支持。
  • 高性能缓存: 与Redis集成缓存API调用,确保快速流畅的用户体验。

🛠️ 技术栈


🚀 本地设置和运行说明

该项目旨在本地运行。

1.先决条件

  • Python 3.9+
  • 正在运行的Redis服务器。

2.安装

在终端中,导航到项目的根文件夹并运行以下命令:

# Create and activate a Python virtual environment
python -m venv venv

# On Windows:
# .\venv\Scripts\activate
# On macOS/Linux:
# source venv/bin/activate

# Install all required dependencies
pip install -r requirements.txt

3.运行应用程序

您需要在项目的根文件夹中运行两个单独的终端。

终端1:启动后端MCP服务器

# Make sure your virtual environment is active
uvicorn app.main:app --reload --port 8000

API服务器将在 http://127.0.0.1:8000互动文档可在以下网址找到: http://127.0.0.1:8000/docs.

终端2:启动前端Streamlit应用程序

# Make sure your virtual environment is active
streamlit run Battle_Simulator.py

应用程序将在您的web浏览器中打开。


💡 未来发展

  • 全集装箱化: 使用容器化应用程序 docker-compose 简化部署并增强可扩展性。
  • 团队分析工具: 一个新的页面,分析了一个由六个口袋妖怪组成的团队,并提供了一份关于其整体类型优缺点的战略报告。
  • 持久的战斗历史: 将战斗日志结果保存到一个简单的数据库(如SQLite)中,以创建过去比赛的持久历史记录。

⚙️ MCP API使用示例

可以使用任何API客户端直接查询服务器。这是一个为Snorlax获取数据的示例。

查询示例

curl -X POST -H "Content-Type: application/json" \
-d '{"resource": "pokemon_data", "action": "get", "params": {"name": "snorlax"}}' \
[http://127.0.0.1:8000/mcp](http://127.0.0.1:8000/mcp)

示例响应

{
  "id": 143,
  "name": "Snorlax",
  "stats": { "hp": 160, "attack": 110, "defense": 65, "special-attack": 65, "special-defense": 110, "speed": 30 },
  "types": [ "normal" ],
  "abilities": [ "immunity", "thick-fat", "gluttony" ],
  "moves": [ { "name": "mega-punch", "power": 80, "type": "normal" } ],
  "evolution_chain": [ "munchlax", "snorlax" ]
}