这是 MinesweeperVariants 项目中的规则模块,包含了扫雷游戏的所有规则实现。该模块分为几个子目录,每个子目录对应不同类型的规则:
- Lrule/:左线规则(雷布局规则)
- Mrule/:中线规则(线索与雷的交互规则)
- Rrule/:右线规则(线索规则)
- rule3D/:3D规则扩展
- sharpRule/:尖锐规则
左线规则定义了地雷在题板上的布局方式。
中线规则定义了雷线索的显示和计算方式。
右线规则定义了线索的显示和计算方式。
三维空间的规则扩展。
特殊的尖锐推理规则。
每个规则都实现为一个Python类,继承自相应的基类:
- 左线规则继承自
Mines
- 中线规则继承自
MinesClue
- 右线规则继承自
Clue
模块提供了自动扫描功能,能够:
- 扫描所有规则文件
- 提取规则类的文档和元信息
- 分类整理规则(L/M/R类型)
- 生成规则文档
从Python文件提取模块和类的文档字符串。
扫描目录下的所有Python文件,提取规则信息。
获取所有规则的完整信息,返回按类型分类的字典。
from minesweepervariants.impl.rule import get_all_rules
# 获取所有规则
rules = get_all_rules()
print(rules['L']) # 左线规则
print(rules['M']) # 中线规则
print(rules['R']) # 右线规则
- 根据规则类型选择相应的基类
- 在对应的子目录中创建新的Python文件
- 实现规则逻辑
- 添加必要的文档字符串
- 定义规则名称和参数
rule/
├── Lrule/ # 左线规则实现
├── Mrule/ # 中线规则实现
├── Rrule/ # 右线规则实现
├── rule3D/ # 3D规则扩展
├── sharpRule/ # 尖锐规则
├── __init__.py # 模块初始化和工具函数
└── README.md # 本文档
- 规则名称应简洁明了,通常使用字母+数字的组合
- 每个规则类必须包含完整的文档字符串
- 规则实现应遵循统一的接口规范
- 新规则需要经过测试确保正确性