Files
game-cards-poker-design/README.md

216 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 扑克牌设计管理系统
一个基于 Django + Vue.js 的扑克牌设计管理系统支持个人从零开始设计完整的54张扑克牌系列。
## 功能特性
- **模板系列库** - 提供经典、现代、卡通、复古等预设模板,快速开始设计
- **素材管理** - 上传自定义花色图案、JQK人像、大小王、背面图案等
- **实时预览** - 基于 Fabric.js 的可视化编辑器实时预览54张牌面
- **自动对称化** - JQK人像上传后自动生成中心对称版本
- **多图层支持** - 支持背景、边框、人像、装饰等多层次图像叠加
- **批量导出** - 一键导出整套扑克牌为PNG格式支持多种分辨率
## 技术栈
### 后端
- Django 5.x
- Django REST Framework
- SQLite
- Pillow (图像处理)
- django-cors-headers
### 前端
- Vue.js 3.x
- Fabric.js 7.x (Canvas 图形库)
- Pinia (状态管理)
- Element Plus (UI 组件库)
- Vite (构建工具)
- Sass (CSS 预处理)
## 项目结构
```
game-cards-poker-design/
├── backend/ # Django 后端
│ ├── poker_api/ # Django 项目配置
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ ├── apps/
│ │ ├── projects/ # 项目管理 & 素材管理
│ │ │ ├── management/commands/init_system.py # 初始化命令
│ │ │ ├── models.py
│ │ │ ├── views.py
│ │ │ └── serializers.py
│ │ ├── templates/ # 模板管理
│ │ └── exports/ # 导出服务
│ ├── media/ # 上传的素材文件 (projects/, export/)
│ ├── manage.py
│ ├── db.sqlite3 # SQLite 数据库
│ └── requirements.txt
├── frontend/ # Vue 前端
│ ├── src/
│ │ ├── components/ # Vue 组件
│ │ │ ├── AssetPanel.vue # 素材面板
│ │ │ ├── DesignPanel.vue # 设计面板
│ │ │ └── AssetUploadDialog.vue
│ │ ├── views/ # 页面视图
│ │ │ ├── Home.vue
│ │ │ ├── Editor.vue
│ │ │ └── Test.vue
│ │ ├── stores/ # Pinia 状态管理
│ │ │ └── projectStore.js
│ │ ├── api/ # 后端 API 调用
│ │ ├── utils/ # 工具函数
│ │ │ ├── cardLayout.js
│ │ │ ├── cardRenderer.js
│ │ │ └── symmetry.js
│ │ ├── router/
│ │ └── App.vue
│ ├── public/
│ ├── vite.config.js
│ └── package.json
└── docs/
```
## 快速开始
### 后端启动
```bash
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py init_system # 初始化示例模板和项目
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 文档
### 项目管理
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/projects/` | 获取所有项目 |
| POST | `/api/projects/` | 创建新项目 |
| GET | `/api/projects/{id}/` | 获取项目详情 |
| PUT | `/api/projects/{id}/` | 更新项目 |
| DELETE | `/api/projects/{id}/` | 删除项目 |
| POST | `/api/projects/{id}/design/` | 保存设计配置 |
### 素材管理
| 方法 | 路径 | 说明 |
|------|------|------|
| 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/` | 获取模板列表 |
### 导出服务
| 方法 | 路径 | 说明 |
|------|------|------|
| 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 | 测试/预览页面 |
## 开发计划
详细的设计规格文档请查看:`docs/superpowers/specs/2026-05-31-poker-card-design-system.md`
## 许可证
MIT License