7 个版本
0.1.6 | 2021 年 4 月 8 日 |
---|---|
0.1.5 | 2021 年 4 月 8 日 |
0.1.3 | 2021 年 3 月 27 日 |
#1628 在 游戏开发
125KB
3K SLoC
poirebot
用 Rust 编写的棋引擎和机器人。
与 poirebot 对弈
机器人偶尔会在 Lichess.org 的账户 @poirebot 上上线。
在机器人全天候运行之前,您可能希望本地运行它以试用。您应该创建一个新的 Lichess.org 账户,这将然后成为一个 BOT 账户。
- 为机器人创建一个新的 Lichess.org 账户
- 通过访问 https://lichess.org/account/oauth/token/create 生成一个新的个人访问令牌 (PAT)
- 给它一个描述,并选择所有选项 除了: 读取偏好,写入偏好,读取电子邮件地址
- 将令牌存储在
LICHESS_TOKEN
环境变量中(或者您也可以稍后使用--token
标志) - 现在您可以安装并运行机器人了
下载最新版本(无需 Rust): https://github.com/aramperes/poirebot/releases/latest
或者使用 Cargo(Rust 1.50+)构建和安装最新版本
rustup update stable
cargo install poirebot-lichess
或者构建最新的 (master 分支) 版本(Rust 1.50+)
rustup update stable
git clone https://github.com/aramperes/poirebot.git
cd poirebot
cargo build --release
# (The poirebot-lichess binary will be in ./target/release)
运行
对于首次运行,需要使用 poirebot-lichess upgrade-account
命令(它将 Lichess 账户转换为 BOT 账户)。
poirebot-lichess upgrade-account
poirebot-lichess start
使用 poirebot-lichess start --help
列出在运行机器人时可以使用的主机标志。
架构
poirebot 使用 64 位 位板 集合跟踪棋盘状态。具体来说,棋盘状态存储在每个方面(颜色)的位板集合中
- 兵
- 马
- 象
- 后
- 王
- 未移动的车
- 吃过路兵的目标方格
它还存储了王是否移动了(布尔值)。
此外,在某个方面(颜色)的突变“提交”之后,它还会为生成移动而生成“继承”的位板
- 棋子(兵、马、象、后和王的并集)
- 攻击(该颜色棋子威胁的方格)
移动生成
poirebot 目前还没有一个 正常工作的脑。当前目标是能够生成所有可能的走法,然后使用某种形式的 MiniMax 算法。
依赖项
poirebot 依赖于 Rust 稳定版 1.50+ 或夜间版,因为它使用了 <number>::clamp
函数。
- anyhow:用于错误处理
- tokio, tokio-stream:异步运行时
- rayon:用于 CPU 上昂贵棋盘操作的并行库
- licorice:Lichess.org API 客户端(分支)
- clap:命令行解析
- rand:伪随机数生成器
灵感来源
这个机器人是为了与 Jeff 进行友好的比赛而制作的。作为公平性规则,两个机器人都不使用棋库来管理棋盘状态和实现走棋规则。
许可协议
MIT,见 LICENSE。
依赖项
~13–26MB
~412K SLoC