1 个不稳定版本
0.1.0 | 2021年5月10日 |
---|
#969 in 游戏开发
91KB
1.5K SLoC
Gridit
一个利用迭代器乐趣的2D网格库。
Gridit
是一个实验性的2D网格库,它实现了不同的迭代器来遍历网格的单元格。它是为了考虑像棋类游戏这样的桌面游戏而创建的,但也可以用于其他用例。
Gridit
开始探索如何使用迭代器创建棋类移动模式。示例棋盘可以在 examples/board
中找到。
简单示例:国王的可能移动(不考虑将军)。
fn possible_moves(&self, grid: &Grid<BoardPiece>, current_pos: Position) -> Vec<Position> {
grid.neighbors(pos)
.grid_positions()
.filter(|(pos, cell)| !matches!(cell, NonEmpty(piece) if piece.color == self.color))
.map(|(pos, _)| pos)
.collect()
}
示例
git clone https://github.com/jomsch/gridit.git
cd gridit
按照以下方式运行示例
生命之舞
cargo run --example gameoflife
棋盘
cargo run --example board
棋盘上带有 T
的棋子是一个 Blocker
,它不能击败任何棋子,并且通过将棋子传送到友军棋子来移动。Giraffe
是一个用于测试目的的空白棋子。如果您想快速测试这个库,我建议您克隆此存储库并为 Giraffe 棋子实现一些移动模式。只需编写 fn possible_moves
函数,并运行棋盘示例。有关灵感,请参阅棋子实现 此处。
缺少的功能
缺少以下功能。等待 泛型关联类型 在 Rust 中实现。
-
pattern_mut
-
neighbor_mut
反馈 & 问题
有反馈或问题吗?
打开一个问题或在Twitter或Reddit上给我发消息。
我很乐意听到您对 Gridit
的想法和想法。
资产许可
在 resources 中找到的资产受 CC-BY-SA 3.0 许可证的许可。这些资产可以在 此处 找到。感谢并归功于
- Colin M.L. Burnett
- Francois-Pier
- NikNaks
许可证
在MIT许可证下分发。有关更多信息,请参阅 LICENSE.txt。