7个版本
0.1.6 | 2021年4月8日 |
---|---|
0.1.5 | 2021年4月8日 |
0.1.3 | 2021年3月27日 |
#878 在 游戏开发
33 每月下载量
用于 poirebot-lichess
91KB
2K SLoC
poirebot
用Rust编写的棋盘引擎和机器人。
与poirebot对弈
该机器人在Lichess.org上有时以账户 @poirebot 的形式出现。
直到机器人24/7在线,您可能希望本地运行它以进行测试。您应该创建一个新的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+ 或 nightly,因为它使用了 <number>::clamp
函数。
- anyhow:用于错误处理
- tokio, tokio-stream:异步运行时
- rayon:用于在 CPU 上进行昂贵棋盘操作的并行库
- licorice:Lichess.org API 客户端 (分支)
- clap:CLI 解析
- rand:伪随机数生成器
灵感来源
这个机器人是为了与 Jeff 进行友好的比赛而制作的。作为公平规则,两个机器人都不使用棋库来管理棋盘状态和实现走法规则。
许可证
MIT,见 LICENSE。
依赖项
~5–12MB
~109K SLoC