bricks/docs/ai/gobang.md
2025-11-18 16:01:43 +08:00

58 lines
2.4 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.

# GobangPoint
控件功能:表示五子棋棋盘中的一个棋位点,根据状态显示为空、黑子或白子,并支持鼠标悬停效果。
类型:普通控件
父类控件:`bricks.Image`
## 初始化参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `p_status` | Number | 棋位状态0 表示空1 表示黑子2 表示白子 |
| `p_x` | Number | 水平位置,取值范围为 1 到 15 |
| `p_y` | Number | 垂直位置,取值范围为 1 到 15 |
| `tip` | String (可选) | 鼠标提示文本 |
> 注:构造函数会自动调用 `calc_url()` 根据位置和状态生成对应的图片路径,并通过 `set_url()` 设置图像源。
## 主要事件
- **`mouseover`**
当鼠标进入控件区域时触发,调用 `set_current_position(true)`,设置当前坐标高亮样式(添加 `curpos` CSS 类)。
- **`mouseout`**
当鼠标离开控件区域时触发,调用 `set_current_position(false)`,移除高亮样式。
---
# Gobang
控件功能:实现一个 15×15 的五子棋游戏界面容器,负责渲染棋盘、管理棋位状态、响应玩家回合逻辑。
类型:容器控件
父类控件:`bricks.VBox`
## 初始化参数
无显式外部传参,内部初始化如下:
- 自动创建一个 `Filler` 占位控件用于自适应布局
- 创建并渲染一个 15×15 的棋盘点阵(使用 `GobangPoint`
- 绑定窗口尺寸变化响应,动态调整每个棋格大小以保持正方形且填满可用空间
## 主要事件
- **`element_resize`(绑定在 `filler` 上)**
`filler` 的 DOM 元素尺寸发生变化时触发,调用 `resize_area()` 方法重新计算每个棋格的宽高,确保棋盘等比缩放适配容器。
### 自定义方法说明
- `render_empty_area()`
初始化并渲染空白棋盘,创建嵌套的 `VBox``HBox` 结构来排列 15×15 的 `GobangPoint` 实例,并存储于 `this.area[i][j]` 中供后续操作。
- `resize_area()`
根据 `filler` 的实际尺寸动态计算每个棋格的大小(取最小边长除以 15并对所有 `GobangPoint` 设置统一的宽高样式。
- `inform_go(party)`
(当前为空实现)用于通知指定方(如 `'black'``'white'`)进行下一步操作,可用于集成 AI 或网络对战逻辑。
> 注:该控件通过 `bricks.Factory.register('Gobang', bricks.Gobang);` 注册,可在模板中以 `<widget type="Gobang"/>` 形式使用。