---
name: arrow_pick_match_rules.aigameplay
description: 箭头推出三消玩法核心规则（PGS）。棋盘上有多条带颜色和方向的路径（每条路径占据若干连续格子），玩家点击路径触发沿方向推出。路径滑出棋盘后飞入底部篮子，篮子中凑齐 3 条同色路径即自动消除。所有路径推出且篮子清空为胜利；篮子满溢或超时为失败。
triggers: 需要生成箭头推出三消、arrow pick match、方向推出+篮子消除、车队推出收集 类玩法时触发。
---

# 箭头推出三消玩法（Arrow Pick & Match）

## 玩法说明

棋盘上有若干路径，每条路径由**多个连续格子**组成，占据一定长度。每条路径有一个**颜色**和一个**推出方向**（由路径形状推导：最后两个点的走向）。

路径用小汽车（或其他实体精灵）表示，路径覆盖的每个格子都放置一辆同色、同朝向的汽车，形成"车队"效果。

### 核心循环

1. 玩家点击某条路径（命中路径上任意格子）
2. 系统检测该路径推出方向上是否有其他路径阻挡
3. **无阻挡** → 整条路径沿方向滑出棋盘边界 → head 汽车飞入底部篮子
4. **有阻挡** → 棋盘抖动 + 路径短暂变红，不推出
5. 飞入篮子后，同色物品自动聚合排列
6. 凑齐 3 个同色 → 自动消除
7. 重复直到胜利或失败

### 与父玩法的关系

本玩法是 `path_elimination_rules` 和 `pick_and_match_rules` 的**融合**：

| 机制 | 来源 | 本玩法中的表现 |
|------|------|--------------|
| 路径方向 + 阻挡检测 + 滑出动画 | `path_elimination_rules` | 点击→检测→滑出 |
| 篮子容器 + 同类聚合 + 3消 | `pick_and_match_rules` | 飞入→聚合→消除 |
| 匹配维度 | 简化 | 单维度（仅颜色），不含形状 |
| 堆叠层级 | 不使用 | 所有路径在同一层 |

## Recipe

```json
{
  "kind": "pgs",
  "pgsVersion": "1.0",
  "gameplayType": "arrow_pick_match",
  "rules": {
    "matchCount": 3,
    "trayCapacity": 7,
    "matchDimension": "color_only",
    "layerStacking": false,
    "blockingModel": "path_direction_check",
    "pickTrigger": "slide_out"
  }
}
```

## Result

产物为 `ref/pgs-schema.json`，描述完整规则。

## 核心机制详解

### 1. 路径数据模型

每条路径包含：
- **points[]**: 路径覆盖的格子坐标列表
- **head**: 最后一个点（车头位置）
- **direction**: 推出方向（由最后两个点推导）
- **color**: 颜色标识（用于篮子匹配）
- **indices[]**: 覆盖的所有格子索引（用于碰撞检测）

### 2. 阻挡检测

从 head 位置出发，沿 direction 逐格检测：
- 如果遇到其他未移除路径占据的格子 → 阻挡
- 如果到达棋盘边界 → 可推出，记录 stepsToExit

### 3. 同色聚合插入

新物品进入篮子时，自动插到最后一个同色物品旁边（而非追加末尾），方便玩家观察凑齐进度。

### 4. 关卡设计约束

- 每种颜色的路径数量**必须恰好为 3**（matchCount）
- 路径不得共享格子（无重叠）
- 必须存在合法的推出序列使篮子不溢出（由 `level_solvability_validator` 验证）

## Binding

```json
{
  "role": "gameplayRule",
  "target": "src/game/",
  "type": "gameplay-module-reference",
  "constraints": {
    "requiredComponents": [
      "tray_container.aicomponent",
      "match_engine.aicomponent",
      "slide_out_to_tray_animation.aicomponent",
      "path_input_handler.aicomponent",
      "grid_board_layout.aicomponent",
      "board_entity_sprite.aiimage",
      "level_solvability_validator.aivalidator"
    ]
  }
}
```

## Skill Definition

```yaml
tools:
  - read_file
  - write_file
inputs:
  - pgsSchema: ref/pgs-schema.json
outputs:
  - gameScene: Game.ts 主场景协调逻辑
  - levelData: 关卡数据（arrows 格式）
```
