kards-env/interactive/README.md

208 lines
4.9 KiB
Markdown
Raw 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.

# 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/)