#poker #cards #evaluator #control-flow #math #gamedev

bin+lib poker-face

使用 Rust Match 控制流结构实现的德克萨斯扑克手牌评估器

1 个不稳定版本

0.1.0 2023 年 9 月 17 日

#646命令行界面

MIT/Apache

23KB
380

POKER FACE - ♥️♦️♣️♠️

github build status crates.io docs.rs Downloads Project Status: Active – The project has reached a stable, usable state and is being actively developed.

Poker-Face 是一个 Rust 虚拟主义练习实现的德克萨斯扑克引擎。它使用典型的 Rust match 控制流结构评估 5 张牌的手牌等级。它通过使用数组匹配和结构匹配来检查属性,确定 5 张牌手牌的等级 MatchHandEvaluator

作为二进制文件的库使用示例

Poker Face 0.1.0 - 🦀 for ♠️ ♣️ ♥️ ♦️
Prehashing cards...

1. Let's shuffle a deck...
 J♥️   7♠️   9♠️   10♥️  5♥️   K♦️   K♣️   K♥️   Q♦️   6♥️   3♥️   J♦️   4♥️  
 A♦️   J♣️   9♣️   5♠️   2♠️   4♣️   5♦️   3♦️   5♣️   6♦️   J♠️   Q♠️   4♠️  
 10♠️  7♣️   9♥️   7♥️   9♦️   3♠️   A♣️   A♥️   7♦️   2♦️   10♣️  6♣️   4♦️  
 K♠️   A♠️   8♣️   8♥️   Q♥️   8♦️   2♣️   2♥️   3♣️   Q♣️   6♠️   8♠️   10♦️ 

2. Let's take (actually, borrow) 2 hands of 5 cards each from the deck
Player 1 has:  J♥️   7♠️   9♠️   10♥️  5♥️  

Player 2 has:  K♦️   K♣️   K♥️   Q♦️   6♥️  


3. Let's evaluate the hands...
Sorted:  J♥️   10♥️  9♠️   7♠️   5♥️  

Sorted:  K♥️   K♣️   K♦️   Q♦️   6♥️  

Player 1 has a [HighCard with a highcard of value  J♥️] 
Player 2 has a [ThreeOfAKind]

4. Celebrate the winner:
The winner is Player 2!


作为库,有一些实用的宏(newcard!、hand!、assert_rank!)用于处理牌、手牌和等级。示例

    assert_rank!(hand!["Ad","Kd","Qd","Jd","10d"], Rank::RoyalFlush);

    assert_rank!(hand!["Kd", "Kh", "Kc", "Ks", "Qd"], Rank::FourOfAKind);

    assert_rank!(hand!["2d", "2h", "Qc", "Qs", "Qd"], Rank::FullHouse);

    assert_eq!(newcard!["Ah"], Card::new(14, Suit::Hearts));

执行

要从 cargo 运行它,只需输入

cargo run -q -- 

或从代码构建和安装一个版本

cargo build --release
cargo install --path .
./target/release/poker-face

贡献

如果您有任何功能建议(例如,要实现的功能),或者如果您在代码、设计、界面等中发现任何问题,请随时在我们的 GitHub 上分享。

我非常感谢您的反馈!

依赖项

~7–9.5MB
~168K SLoC