3个稳定版本
1.0.2 | 2024年8月2日 |
---|---|
1.0.1 | 2024年8月1日 |
#142 in 游戏开发
每月317次下载
用于 gyges_engine
2MB
12K SLoC
概览
桌面游戏盖伊格斯的库。
盖伊格斯是一款两人对战策略游戏。盖伊格斯的目标是将一个棋子移动到对手的最后一行。难点在于,没有棋子属于任何人。你只能移动离你最近的行的棋子。棋子由1、2或3个环组成;这个数字也是它们必须移动的格数。如果一个棋子落在另一个棋子上,它可以移动等于那个棋子环数的格数。它还可以将那个棋子移到任何开放空间。
在桌面游戏竞技场查看游戏: 盖伊格斯.
这是一个专门为游戏盖伊格斯编写的库,而不是玩游戏引擎。您可以在这里查看引擎。
文档 和 Crates.io页面。
库功能
- 棋盘表示
- Zobrist哈希
- 位板
- 移动表示
- 自定义移动列表
- 快速移动生成
- 置换表
库使用
您可以通过将以下内容添加到您的 Cargo.toml
文件中来将此crate添加到项目中
[dependencies]
gyges = "1.0.1"
平台
此项目仅在x86_64架构上进行了测试,不对其他平台提供保证。
示例
设置初始棋盘位置
这是库中内置的一个特定初始位置。还可以加载其他常量棋盘位置。
use gyges::board::*;
// Load Board
let board = BoardState::from(STARTING_BOARD);
加载特定棋盘
可以使用以下记法创建棋盘,如下所示。每组6个数字代表棋盘上的一行,从您的棋盘一侧开始向左到右。棋盘的方向是主观的,基于如何输入棋盘。
use gyges::board::*;
// Load Board
let board = BoardState::from("321123/000000/000000/000000/000000/321123");
应用和生成移动
移动生成是一个两步过程。您必须生成一个 RawMoveList
,然后将这个列表中的移动提取到 Vec<Move>
。这样做是为了提高效率并减少不必要的处理。当进行移动时,make_move
函数将返回应用了移动的棋盘的副本。
use gyges::board::*;
use gyges::moves::*;
// Load Board
let mut board = BoardState::from(STARTING_BOARD);
// Define a player
let player = Player::One;
// Generate moves
let mut movelist = unsafe{ valid_moves(&mut board, player) }; // Create a MoveList
let moves = movelist.moves(&mut board); // Extract the moves
// Make a move
board.make_move(&moves[0]);
致谢
这个项目和它的格式受到令人难以置信的 Rust 棋牌程序 Pleco 的启发。
贡献
欢迎贡献!如果您想贡献力量,请提交一个 pull request。非常欢迎反馈,包括报告问题或提出改进建议。
许可证
本项目采用 GNU 通用公共许可证 v3.0 发布。请在使用或分发本项目时查阅并遵守许可证条款。
依赖项
~315KB