kards-env/interactive/README.md

208 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

2025-09-05 17:05:43 +08:00
# KARDS 交互式测试环境
一个功能丰富的命令行界面用于测试和调试KARDS战斗引擎。
## 🚀 快速开始
### 启动环境
```bash
# 方法1: 使用启动脚本
./run_interactive.sh
# 方法2: 直接运行Python
.venv/bin/python interactive/interactive_test.py
```
### 基本操作流程
1. **部署单位**: `deploy <unit_id>`
2. **移动单位**: `move <index> <line> <pos>`
3. **攻击目标**: `attack <from> <to>`
4. **结束回合**: `endturn`
## 📖 命令参考
### 显示命令
| 命令 | 简写 | 说明 | 示例 |
|------|------|------|------|
| `show [detailed]` | `s` | 显示战场状态 | `show detailed` |
| `list [nation]` | `ls` | 列出可用单位 | `list germany` |
| `info <index>` | `i` | 查看单位详情 | `info 0` |
| `help` | `h`, `?` | 显示帮助 | `help` |
### 单位操作
| 命令 | 简写 | 说明 | 示例 |
|------|------|------|------|
| `deploy <unit_id> [pos]` | `d` | 部署单位 | `deploy ger_infantry_grenadier 0` |
| `move <index> <line> <pos>` | `m` | 移动单位 | `move 1 FRONT 0` |
| `attack <from> <to>` | `a` | 攻击目标 | `attack 0 2` |
**战线类型**:
- `SUPPORT1``S1`: 玩家1支援线
- `FRONT`: 前线
- `SUPPORT2``S2`: 玩家2支援线
### 游戏控制
| 命令 | 简写 | 说明 |
|------|------|------|
| `endturn` | `end` | 结束当前回合 |
| `reset` | - | 重置战场 |
| `switch` | - | 切换活动玩家(调试) |
### 资源管理
| 命令 | 简写 | 说明 | 示例 |
|------|------|------|------|
| `kredits` | `k` | 查看资源状态 | `kredits` |
| `setk <player> <amt>` | - | 设置Kredits | `setk 0 10` |
| `sets <player> <amt>` | - | 设置Kredits Slot | `sets 0 12` |
### 测试场景
| 命令 | 说明 | 示例 |
|------|------|------|
| `scenarios` | 列出所有测试场景 | `scenarios` |
| `scenario <name>` | 加载预设场景 | `scenario frontline` |
**可用场景**:
- `basic`: 基础部署测试
- `frontline`: 前线争夺战
- `squeeze`: 挤压机制测试
- `resources`: 资源管理测试
- `massive`: 大规模战斗
- `blitz`: 闪击单位测试
- `artillery`: 火炮测试
- `air`: 空战场景
### 保存/加载
| 命令 | 说明 | 示例 |
|------|------|------|
| `save <filename>` | 保存当前状态 | `save my_game` |
| `load <filename>` | 加载保存的状态 | `load my_game` |
## 🎮 使用示例
### 基础对战流程
```bash
# 德军回合
deploy ger_infantry_grenadier # 部署步兵
deploy ger_tank_panzer_iv # 部署坦克
move 1 FRONT 0 # 移动步兵到前线
endturn # 结束回合
# 美军回合
deploy usa_infantry_marine # 部署陆战队
move 1 FRONT 1 # 移动到前线
attack 1 0 # 攻击德军步兵
endturn # 结束回合
```
### 测试特定场景
```bash
scenario frontline # 加载前线战斗场景
show detailed # 查看详细战场状态
attack 0 2 # 火炮攻击前线单位
info 2 # 查看被攻击单位状态
```
### 资源管理测试
```bash
scenario resources # 加载资源测试场景
kredits # 查看当前资源
move 0 FRONT 0 # 尝试移动(消耗资源)
kredits # 再次查看资源
setk 0 10 # 设置资源(调试)
```
## 🎨 显示说明
### 颜色编码
- 🔵 **蓝色**: 玩家1德军
- 🔴 **红色**: 玩家2美军
- 🟡 **黄色**: 资源和重要信息
- 🟢 **绿色**: 成功消息
-**白色**: 中立/空位置
### 单位图标
- 🚶 步兵 (Infantry)
- 🚗 坦克 (Tank)
- 🎯 火炮 (Artillery)
- ✈️ 战斗机 (Fighter)
- 💣 轰炸机 (Bomber)
### 战场布局
```
[玩家1支援线]
[前线战场]
[玩家2支援线]
```
## 💡 高级功能
### 自动补全
使用 Tab 键自动补全命令。
### 命令历史
使用上下箭头键浏览命令历史。
### 批量测试
可以通过管道输入命令序列:
```bash
cat demo_commands.txt | .venv/bin/python interactive/interactive_test.py
```
## 🔧 调试功能
### 查看单位详情
```bash
info <index> # 显示单位的所有属性
```
### 强制切换玩家
```bash
switch # 立即切换到另一个玩家(跳过回合)
```
### 设置任意资源
```bash
setk <player> <amount> # 设置Kredits
sets <player> <amount> # 设置Kredits Slot
```
## 📝 注意事项
1. **单位索引**: 从0开始按战场位置顺序编号
2. **玩家ID**: 0 = 玩家11 = 玩家2
3. **保存文件**: 存储在 `interactive/saves/` 目录
4. **历史文件**: 命令历史保存在 `interactive/.history`
## 🐛 已知问题
- 保存/加载功能使用pickle仅用于测试环境
- 某些复杂能力可能未完全实现
## 📚 相关文档
- [战斗引擎文档](../README.md)
- [单位定义规范](../assets/units/units_spec.yaml)
- [测试用例](../tests/)