天使之恋集字送大礼
准备工作
1. 安装运行环境
必须按以下步骤操作,否则会导致后续命令无法执行:
Windows系统:下载Python 3.11.4安装包,地址为https://www.python.org/ftp/python/3.11.4/python-3.11.4-amd64.exe,双击安装包后,勾选「Add Python to PATH」选项,点击「Install Now」,等待安装完成;
macOS系统:下载Python 3.11.4安装包,地址为https://www.python.org/ftp/python/3.11.4/python-3.11.4-macos11.pkg,双击安装包按提示完成安装,打开终端输入python3 --version,若输出Python 3.11.4则安装成功。
安装完成后,打开终端(Windows为CMD或PowerShell,mac为终端),执行命令安装依赖:
pip install fastapi uvicorn
核心实操步骤
1. 创建项目文件夹与代码文件
操作时需在终端中切换到指定路径执行命令:
在任意盘新建文件夹,命名为angel_love,打开终端执行命令进入该文件夹:
mkdir angel_love && cd angel_love
在文件夹内新建名为main.py的文本文件,用记事本或VS Code打开,完整复制以下代码:
```python
from fastapi import FastAPI, HTTPException
import sqlite3
初始化FastAPI应用
app = FastAPI()
数据库初始化函数
def init_db():
conn = sqlite3.connect('angel_love.db')
c = conn.cursor()
创建用户表,存储用户ID、已收集字符、领奖状态
c.execute('''CREATE TABLE IF NOT EXISTS users
(user_id TEXT PRIMARY KEY, collected_chars TEXT, is_received INTEGER DEFAULT 0)''')
创建集字规则表,固定可收集的字符
c.execute('''CREATE TABLE IF NOT EXISTS char_rules
(char_name TEXT PRIMARY KEY, required_count INTEGER DEFAULT 1)''')
插入初始集字规则,仅允许收集天、使、之、恋4个字符
c.execute("INSERT OR IGNORE INTO char_rules VALUES (?, ?)", ('天', 1))
c.execute("INSERT OR IGNORE INTO char_rules VALUES (?, ?)", ('使', 1))
c.execute("INSERT OR IGNORE INTO char_rules VALUES (?, ?)", ('之', 1))
c.execute("INSERT OR IGNORE INTO char_rules VALUES (?, ?)", ('恋', 1))
conn.commit()
conn.close()
启动应用时自动初始化数据库
init_db()
集字接口
@app.post("/collect_char")
def collect_char(user_id: str, char: str):
验证字符是否为指定集字
conn = sqlite3.connect('angel_love.db')
c = conn.cursor()
c.execute("SELECT char_name FROM char_rules WHERE char_name = ?", (char,))
if not c.fetchone():
raise HTTPException(status_code=400, detail="无效字符,仅可收集天、使、之、恋")
获取用户现有集字,若存在则更新,不存在则新增
c.execute("SELECT collected_chars FROM users WHERE user_id = ?", (user_id,))
result = c.fetchone()
if result:
existing_chars = result[0].split(',') if result[0] else []
if char not in existing_chars:
existing_chars.append(char)
updated_chars = ','.join(existing_chars)
c.execute("UPDATE users SET collected_chars = ? WHERE user_id = ?", (updated_chars, user_id))
else:
c.execute("INSERT INTO users (user_id, collected_chars) VALUES (?, ?)", (user_id, char))
conn.commit()
conn.close()
return {"code": 200, "msg": "集字成功"}
领奖接口
@app.post("/receive_gift")
def receive_gift(user_id: str):
conn = sqlite3.connect('angel_love.db')
c = conn.cursor()
检查是否已领奖,避免重复领取
c.execute("SELECT is_received FROM users WHERE user_id = ?", (user_id,))
result = c.fetchone()
if result and result[0] == 1:
raise HTTPException(status_code=400, detail="已领取过大礼")
检查是否收集齐4个字符
c.execute("SELECT collected_chars FROM users WHERE user_id = ?", (user_id,))
result = c.fetchone()
if not result or not result[0]:
raise HTTPException(status_code=400, detail="还未收集任何字符")
collected_chars = set(result[0].split(','))
required_chars = {'天', '使', '之', '恋'}
if collected_chars != required_chars:
missing = required_chars - collected_chars
raise HTTPException(status_code=400, detail=f"还缺少以下字符:{','.join(missing)}")
标记用户已领奖
c.execute("UPDATE users SET is_received = 1 WHERE user_id = ?", (user_id,))
conn.commit()
conn.close()
return {"code": 200, "msg": "恭喜您!已成功领取天使之恋大礼"}
```
2. 启动服务并测试功能
必须在angel_love文件夹内执行以下命令,否则无法找到main.py文件:
在终端执行命令启动服务:
uvicorn main:app --reload
服务启动后,打开浏览器输入地址http://127.0.0.1:8000/docs,进入FastAPI自动生成的测试界面;
先测试集字功能:点击「/collect_char」接口,点击「Try it out」,输入user_id(可自定义,比如user001)、char分别输入天、使、之、恋,每输入一个点击「Execute」,返回集字成功即代表该字符已收集;
全部字符收集完成后,测试领奖功能:点击「/receive_gift」接口,点击「Try it out」,输入之前的user_id,点击「Execute」,返回成功信息即代表领奖完成。
异常排查技巧
- 端口被占用报错:启动服务时若提示端口已被使用,可更换端口启动,命令为
uvicorn main:app --reload --port 8001; - 字符输入错误无法识别:确保输入的是半角中文,不要使用全角或错别字;
- 服务启动失败:检查是否在正确的文件夹执行命令,或Python环境变量是否配置正确。
版权保护: 本文由 741卡盟 原创,转载请保留链接: http://741ka.com/gamenews/20578.html
- 上一篇:三国将魂怎么获得
- 下一篇:武士少女成就攻略要点一览
