#poker #hand #hands #card #evaluate #deck #rank

pkr

用于评估扑克牌型的库

2 个版本

0.1.1 2023 年 5 月 31 日
0.1.0 2023 年 5 月 31 日

#4#hands

GPL-3.0 许可证

58KB
1K SLoC

pkr

"pkr" 是一个 Rust 库,它提供了建模和评估扑克游戏的基本组件。它包括 Card(牌)、Rank(花色)、Suit(花型)、Deck(牌组)和 Hand(手牌)等基本实体,以及洗牌和发牌的功能。此外,它还提供了一套创建和评估扑克手牌的工具。该库在构建时注重效率,关键性能组件的编写方式旨在最小化不必要的计算。

安装

您可以通过在您的 Cargo.toml 中添加以下内容来下载和使用此库:

[dependencies]
pkr = "0.1.1"

特性

  • 使用标准的字符串表示法(例如 "As Ks Qs Js Ts")定义扑克手牌。
  • 根据扑克的标准规则评估扑克手牌,包括支持 Straight Flush(同花顺)、Four of a Kind(四条)、Full House(满贯)、Flush(同花)、Straight(顺子)、Three of a Kind(三条)、Two Pair(两对)、One Pair(一对)和 High Card(高牌)等手牌类型。
  • 计算扑克手牌的数值得分以进行比较。
  • 能够评估由 2 张到 9 张牌组成的扑克手牌。
  • 创建一个包含 52 张牌的牌组并洗牌。

示例

创建一个 Hand 结构体

use pkr::hand::Hand;
hand1 = Hand::new_from_str("Ts Js Qs Ks As").unwrap();

这会创建一个 Royal Flush 手牌。

一旦您有了 Hand,您就可以评估其得分

let score1 = hand1.get_score();

这返回一个 u32 类型的得分,代表根据扑克规则计算的手牌价值,使其可比较

hand2 = Hand::new_from_str("As Ad Ah Ac Ks").unwrap();
score2 = hand2.get_score();
assert!(score1 > score2);

请注意,此库尚未处理游戏进程(目前) - 它只是提供了一种评估扑克手牌的方法。

许可证

本项目采用 GNU 通用公共许可证 v3.0。

依赖关系

~2MB
~42K SLoC