2026-05-31 11:46:24 +08:00
|
|
|
|
# 扑克牌设计管理系统
|
|
|
|
|
|
|
|
|
|
|
|
一个基于 Django + Vue.js 的扑克牌设计管理系统,支持个人从零开始设计完整的54张扑克牌系列。
|
|
|
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
|
|
|
|
|
|
- **模板系列库** - 提供经典、现代、卡通、复古等预设模板,快速开始设计
|
|
|
|
|
|
- **素材管理** - 上传自定义花色图案、JQK人像、大小王、背面图案等
|
|
|
|
|
|
- **实时预览** - 基于 Fabric.js 的可视化编辑器,实时预览54张牌面
|
|
|
|
|
|
- **自动对称化** - JQK人像上传后自动生成中心对称版本
|
|
|
|
|
|
- **多图层支持** - 支持背景、边框、人像、装饰等多层次图像叠加
|
|
|
|
|
|
- **批量导出** - 一键导出整套扑克牌为PNG格式,支持多种分辨率
|
|
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
|
|
|
|
|
### 后端
|
|
|
|
|
|
- Django 5.x
|
|
|
|
|
|
- Django REST Framework
|
|
|
|
|
|
- SQLite
|
|
|
|
|
|
- Pillow (图像处理)
|
2026-06-01 19:00:24 +08:00
|
|
|
|
- django-cors-headers
|
2026-05-31 11:46:24 +08:00
|
|
|
|
|
|
|
|
|
|
### 前端
|
|
|
|
|
|
- Vue.js 3.x
|
2026-06-01 19:00:24 +08:00
|
|
|
|
- Fabric.js 7.x (Canvas 图形库)
|
2026-05-31 11:46:24 +08:00
|
|
|
|
- Pinia (状态管理)
|
2026-06-01 19:00:24 +08:00
|
|
|
|
- Element Plus (UI 组件库)
|
2026-05-31 11:46:24 +08:00
|
|
|
|
- Vite (构建工具)
|
2026-06-01 19:00:24 +08:00
|
|
|
|
- Sass (CSS 预处理)
|
2026-05-31 11:46:24 +08:00
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
2026-06-01 19:00:24 +08:00
|
|
|
|
game-cards-poker-design/
|
|
|
|
|
|
├── backend/ # Django 后端
|
|
|
|
|
|
│ ├── poker_api/ # Django 项目配置
|
|
|
|
|
|
│ │ ├── settings.py
|
|
|
|
|
|
│ │ ├── urls.py
|
|
|
|
|
|
│ │ └── wsgi.py
|
2026-05-31 11:46:24 +08:00
|
|
|
|
│ ├── apps/
|
2026-06-01 19:00:24 +08:00
|
|
|
|
│ │ ├── projects/ # 项目管理 & 素材管理
|
|
|
|
|
|
│ │ │ ├── management/commands/init_system.py # 初始化命令
|
|
|
|
|
|
│ │ │ ├── models.py
|
|
|
|
|
|
│ │ │ ├── views.py
|
|
|
|
|
|
│ │ │ └── serializers.py
|
2026-05-31 11:46:24 +08:00
|
|
|
|
│ │ ├── templates/ # 模板管理
|
|
|
|
|
|
│ │ └── exports/ # 导出服务
|
2026-06-01 19:00:24 +08:00
|
|
|
|
│ ├── media/ # 上传的素材文件 (projects/, export/)
|
|
|
|
|
|
│ ├── manage.py
|
|
|
|
|
|
│ ├── db.sqlite3 # SQLite 数据库
|
2026-05-31 11:46:24 +08:00
|
|
|
|
│ └── requirements.txt
|
|
|
|
|
|
│
|
2026-06-01 19:00:24 +08:00
|
|
|
|
├── frontend/ # Vue 前端
|
2026-05-31 11:46:24 +08:00
|
|
|
|
│ ├── src/
|
2026-06-01 19:00:24 +08:00
|
|
|
|
│ │ ├── components/ # Vue 组件
|
|
|
|
|
|
│ │ │ ├── AssetPanel.vue # 素材面板
|
|
|
|
|
|
│ │ │ ├── DesignPanel.vue # 设计面板
|
|
|
|
|
|
│ │ │ └── AssetUploadDialog.vue
|
2026-05-31 11:46:24 +08:00
|
|
|
|
│ │ ├── views/ # 页面视图
|
2026-06-01 19:00:24 +08:00
|
|
|
|
│ │ │ ├── Home.vue
|
|
|
|
|
|
│ │ │ ├── Editor.vue
|
|
|
|
|
|
│ │ │ └── Test.vue
|
|
|
|
|
|
│ │ ├── stores/ # Pinia 状态管理
|
|
|
|
|
|
│ │ │ └── projectStore.js
|
|
|
|
|
|
│ │ ├── api/ # 后端 API 调用
|
|
|
|
|
|
│ │ ├── utils/ # 工具函数
|
|
|
|
|
|
│ │ │ ├── cardLayout.js
|
|
|
|
|
|
│ │ │ ├── cardRenderer.js
|
|
|
|
|
|
│ │ │ └── symmetry.js
|
|
|
|
|
|
│ │ ├── router/
|
|
|
|
|
|
│ │ └── App.vue
|
2026-05-31 11:46:24 +08:00
|
|
|
|
│ ├── public/
|
2026-06-01 19:00:24 +08:00
|
|
|
|
│ ├── vite.config.js
|
2026-05-31 11:46:24 +08:00
|
|
|
|
│ └── package.json
|
|
|
|
|
|
│
|
|
|
|
|
|
└── docs/
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 后端启动
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd backend
|
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
python manage.py migrate
|
2026-06-01 19:00:24 +08:00
|
|
|
|
python manage.py init_system # 初始化示例模板和项目
|
2026-05-31 11:46:24 +08:00
|
|
|
|
python manage.py runserver
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
后端服务将运行在 http://localhost:8000
|
|
|
|
|
|
|
|
|
|
|
|
### 前端启动
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd frontend
|
|
|
|
|
|
npm install
|
|
|
|
|
|
npm run dev
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
前端服务将运行在 http://localhost:5173
|
|
|
|
|
|
|
|
|
|
|
|
## 扑克牌结构
|
|
|
|
|
|
|
|
|
|
|
|
系统支持完整的54张标准扑克牌:
|
|
|
|
|
|
|
|
|
|
|
|
| 类型 | 数量 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| 数字牌 | 40张 | 4花色 × 10张(A, 2-10) |
|
|
|
|
|
|
| 花牌 JQK | 12张 | 4花色 × 3张(J, Q, K) |
|
|
|
|
|
|
| 大小王 | 2张 | 大王、小王 |
|
|
|
|
|
|
|
|
|
|
|
|
**花色分类:**
|
|
|
|
|
|
- ♠ 黑桃 (Spade) - 黑色
|
|
|
|
|
|
- ♥ 红桃 (Heart) - 红色
|
|
|
|
|
|
- ♣ 梅花 (Club) - 黑色
|
|
|
|
|
|
- ♦ 方块 (Diamond) - 红色
|
|
|
|
|
|
|
|
|
|
|
|
## 核心功能
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 模板系列库
|
|
|
|
|
|
|
|
|
|
|
|
系统提供多种预设模板:
|
|
|
|
|
|
- **经典风格** - 标准扑克牌设计,传统花色和字体
|
|
|
|
|
|
- **现代简约** - 扁平化设计,简洁线条
|
|
|
|
|
|
- **卡通风格** - Q版可爱人像,圆润花色图案
|
|
|
|
|
|
- **复古风格** - 复古色调和纹理
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 素材上传
|
|
|
|
|
|
|
|
|
|
|
|
支持上传的素材类型:
|
|
|
|
|
|
- 花色图案 (PNG/SVG)
|
|
|
|
|
|
- JQK人像 (PNG/JPG)
|
|
|
|
|
|
- 大小王图案 (PNG/JPG)
|
|
|
|
|
|
- 背面图案 (PNG/JPG)
|
|
|
|
|
|
- 边框装饰 (SVG)
|
|
|
|
|
|
- 数字字体 (TTF/OTF)
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 设计编辑器
|
|
|
|
|
|
|
|
|
|
|
|
- 实时预览和编辑
|
|
|
|
|
|
- 多图层管理
|
|
|
|
|
|
- 缩放和平移
|
|
|
|
|
|
- 中心对称生成(JQK)
|
|
|
|
|
|
- 批量应用样式
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 导出功能
|
|
|
|
|
|
|
|
|
|
|
|
- 单张导出 PNG
|
|
|
|
|
|
- 批量导出整副牌(ZIP压缩包)
|
|
|
|
|
|
- 多种分辨率选择:
|
|
|
|
|
|
- 标准 (750×1050px)
|
|
|
|
|
|
- 高清 (1500×2100px)
|
|
|
|
|
|
- 超高清 (3000×4200px)
|
|
|
|
|
|
|
|
|
|
|
|
## API 文档
|
|
|
|
|
|
|
|
|
|
|
|
### 项目管理
|
|
|
|
|
|
|
2026-06-01 19:00:24 +08:00
|
|
|
|
| 方法 | 路径 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| GET | `/api/projects/` | 获取所有项目 |
|
|
|
|
|
|
| POST | `/api/projects/` | 创建新项目 |
|
|
|
|
|
|
| GET | `/api/projects/{id}/` | 获取项目详情 |
|
|
|
|
|
|
| PUT | `/api/projects/{id}/` | 更新项目 |
|
|
|
|
|
|
| DELETE | `/api/projects/{id}/` | 删除项目 |
|
|
|
|
|
|
| POST | `/api/projects/{id}/design/` | 保存设计配置 |
|
2026-05-31 11:46:24 +08:00
|
|
|
|
|
|
|
|
|
|
### 素材管理
|
|
|
|
|
|
|
2026-06-01 19:00:24 +08:00
|
|
|
|
| 方法 | 路径 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| GET | `/api/projects/{id}/assets/` | 获取项目素材列表 |
|
|
|
|
|
|
| POST | `/api/projects/{id}/assets/` | 上传素材 |
|
|
|
|
|
|
| GET | `/api/projects/{id}/assets/{asset_id}/` | 获取素材详情 |
|
|
|
|
|
|
| DELETE | `/api/projects/{id}/assets/{asset_id}/` | 删除素材 |
|
|
|
|
|
|
|
|
|
|
|
|
### 模板管理
|
|
|
|
|
|
|
|
|
|
|
|
| 方法 | 路径 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| GET | `/api/templates/` | 获取模板列表 |
|
2026-05-31 11:46:24 +08:00
|
|
|
|
|
|
|
|
|
|
### 导出服务
|
|
|
|
|
|
|
2026-06-01 19:00:24 +08:00
|
|
|
|
| 方法 | 路径 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| POST | `/api/projects/{id}/export/` | 批量导出整副牌 |
|
|
|
|
|
|
| GET | `/api/projects/{id}/export/{card_key}/` | 导出单张牌 |
|
|
|
|
|
|
|
|
|
|
|
|
## 管理命令
|
|
|
|
|
|
|
|
|
|
|
|
### 初始化系统
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python manage.py init_system
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
创建 4 种预设模板(经典、现代、卡通、复古)和一个示例项目。
|
|
|
|
|
|
|
|
|
|
|
|
## 前端路由
|
|
|
|
|
|
|
|
|
|
|
|
| 路径 | 页面 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| `/` | Home | 项目列表首页 |
|
|
|
|
|
|
| `/editor/:projectId?` | Editor | 设计编辑器(可选项目ID) |
|
|
|
|
|
|
| `/test` | Test | 测试/预览页面 |
|
2026-05-31 11:46:24 +08:00
|
|
|
|
|
|
|
|
|
|
## 开发计划
|
|
|
|
|
|
|
|
|
|
|
|
详细的设计规格文档请查看:`docs/superpowers/specs/2026-05-31-poker-card-design-system.md`
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
MIT License
|