3 个版本
0.1.2 | 2022年6月13日 |
---|---|
0.1.1 | 2022年6月7日 |
0.1.0 | 2022年6月7日 |
在 游戏 中排名第 302
6MB
352 行
和平棋模拟
🙃 人类 1
:你是否想过,如果两个和平主义者下棋会是什么样子?
😐 人类 2
:什么?
🙃 人类 1
:正是如此!
💀 人 3
:💀
😐 人类 2
:这有什么意义吗?
🙃 人类 1
:嗯,是的!这可能是很有趣的!或者...大部分都很无聊!请查看下面的动画。
玩家模式
实际上,模拟支持四种 AI 模式。虽然这里不能称之为 AI,因为没有实现智能逻辑。一切都是随机的!但考虑到了几个小因素。如果你喜欢,我们可以称之为 RandomAI。
- 和平主义者 - 每当可能的时候,选择 非捕获 移动!但优先考虑非捕获的 将军 轮!唯一可以玩捕获移动的原因是没有任何其他可能的移动可以玩 - 这种情况在国王被将军时发生得更频繁。
- 攻击型 - 总是优先选择 捕获/将军 轮。只有 将军 轮的优先级更高。
- 半和平主义者 - 允许兵卒捕获其他兵卒的和平主义者模式。我们可以称之为 升变派对模式。
- 随机 - 轮次完全随机地从所有可用轮次中选择。
和平主义者玩家对和平主义者玩家
在下面的第一场比赛中,黑方以 Qb3#
赢得比赛。
在下面的第二场比赛中,比赛以 和棋 (50回合规则) 结束。
和平主义者玩家对攻击型玩家
我们可以假设这种游戏不会持续很长时间。
在下面的例子中,攻击型玩家是黑方,并在第 18 检将回合中赢得了比赛。
攻击型玩家对攻击型玩家
两个都偏好 捕获 轮的随机 AI 玩家?这样的游戏会很快结束吗?结果会是什么?
嗯。不幸的是,大多数有攻击型玩家的游戏都以和棋结束。太过于激进和愚蠢,不能经常赢得比赛。
半和平主义者玩家对半和平主义者玩家
这种模式有一些相当有趣的统计数据!
示例 #1
:第123步,黑棋玩家通过 Qg3#
赢得比赛。
示例 #2
:第107步,白棋玩家通过 b8=Q#
赢得比赛。
随机玩家对战随机玩家
两个完全随机的玩家产生了最随机的比赛结果。这在某种程度上是有道理的。
示例 #1
:第111步,这场比赛以 和棋 结束。
示例 #2
:第93步,白棋玩家通过 Qa7#
赢得比赛。
关于
这是我想练习Rust技能的方法。这个小实验主要是为了好玩……我相信!所以请享受这些愚蠢的统计数据,并玩得开心!
依赖项
下面这两个Rust包是为这个项目创建的,但现在可以用于更有用的东西。不那么荒谬。
但为什么你没有使用现有的国际象棋工具或库来完成这个有趣的项目呢?
这并不是重点!最快的路线不一定是最好的。主要目标是学习Rust!从头开始做整个国际象棋是一个有趣的挑战和愉快的冒险。🙃
如何运行
# Build
cargo build --release # Find binary in target/release directory
# Running tests
cargo test
cargo clippy
帮助使用文本片段
√ ~/pacifist-chess-simulation/target/release (main) $ ./pacifist-chess-simulation --help
USAGE:
pacifist-chess-simulation [OPTIONS]
OPTIONS:
-b, --player-black <PLAYER_BLACK>
White player mode: Random/Pacifist/Aggressive/SemiPacifist [default: Pacifist]
-t, --animation-frame-duration <ANIMATION_FRAME_DURATION>
Animation frame duration in microseconds (animation lasts 20 frames) [default: 50000]
-w, --player-white <PLAYER_WHITE>
White player mode: Random/Pacifist/Aggressive/SemiPacifist [default: Pacifist]
[...]
依赖项
~4–12MB
~140K SLoC