#chess-engine #lichess #account #access-token #run #flags #poirebot

应用 poirebot-lichess

用 Rust 编写的 Lichess 国际象棋机器人

7 个版本

0.1.6 2021 年 4 月 8 日
0.1.5 2021 年 4 月 8 日
0.1.3 2021 年 3 月 27 日

#1628游戏开发

MITAGPL-3.0-only

125KB
3K SLoC

poirebot

用 Rust 编写的棋引擎和机器人。

Build status Crates.io Crates.io

与 poirebot 对弈

机器人偶尔会在 Lichess.org 的账户 @poirebot 上上线。

在机器人全天候运行之前,您可能希望本地运行它以试用。您应该创建一个新的 Lichess.org 账户,这将然后成为一个 BOT 账户。

  1. 为机器人创建一个新的 Lichess.org 账户
  2. 通过访问 https://lichess.org/account/oauth/token/create 生成一个新的个人访问令牌 (PAT)
  3. 给它一个描述,并选择所有选项 除了: 读取偏好,写入偏好,读取电子邮件地址
  4. 将令牌存储在 LICHESS_TOKEN 环境变量中(或者您也可以稍后使用 --token 标志)
  5. 现在您可以安装并运行机器人了

下载最新版本(无需 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