27 个版本

0.5.1 2024 年 3 月 23 日
0.5.0 2023 年 12 月 17 日
0.4.20 2023 年 10 月 3 日
0.4.19 2023 年 6 月 11 日
0.3.8 2020 年 10 月 12 日

#68游戏开发

Download history 1/week @ 2024-05-28 4/week @ 2024-06-04 1/week @ 2024-06-11

967 每月下载量
2 crates 中使用

Apache-2.0

140KB
3.5K SLoC

cardpack.rs

License: Apache 2.0 Build and Test Crates.io Version Rustdocs

使用 Rust 编写的通用扑克牌库。库的目标包括

  • 各种类型的牌组。
  • 国际化支持。
  • 为特定牌组创建自定义排序的能力。

使用方法

fn main() {
    let pack = cardpack::Pack::french_deck();

    let mut shuffled = pack.cards().shuffle();
    let sb = shuffled.draw(2).unwrap();
    let bb = shuffled.draw(2).unwrap();

    println!("small blind: {}", sb.by_symbol_index());
    println!("big blind:   {}", bb.by_symbol_index());

    println!();
    println!("flop : {}", shuffled.draw(3).unwrap().by_symbol_index());
    println!("turn : {}", shuffled.draw(1).unwrap().by_symbol_index());
    println!("river: {}", shuffled.draw(1).unwrap().by_symbol_index());
}

示例

库中在 examples 目录中有几个演示程序。

对于传统的法国牌组

$> cargo run --example traditional
Long in English and German:
      Ace of Spades
      Ass von Spaten
      King of Spades
      König von Spaten
      Queen of Spades
      Dame von Spaten
...
   Short Symbols in en-US: A♠ K♠ Q♠ J♠ 1098765432♠ A♥ K♥ Q♥ J♥ 1098765432♥ A♦ K♦ Q♦ J♦ 1098765432♦ A♣ K♣ Q♣ J♣ 1098765432♣
   Short Symbols in de   : A♠ K♠ D♠ B♠ 1098765432♠ A♥ K♥ D♥ B♥ 1098765432♥ A♦ K♦ D♦ B♦ 1098765432♦ A♣ K♣ D♣ B♣ 1098765432♣
   Short Letters in en-US: AS KS QS JS 10S 9S 8S 7S 6S 5S 4S 3S 2S AH KH QH JH 10H 9H 8H 7H 6H 5H 4H 3H 2H AD KD QD JD 10D 9D 8D 7D 6D 5D 4D 3D 2D AC KC QC JC 10C 9C 8C 7C 6C 5C 4C 3C 2C
   Short Letters in de   : AS KS DS BS 10S 9S 8S 7S 6S 5S 4S 3S 2S AH KH DH BH 10H 9H 8H 7H 6H 5H 4H 3H 2H AD KD DD BD 10D 9D 8D 7D 6D 5D 4D 3D 2D AK KK DK BK 10K 9K 8K 7K 6K 5K 4K 3K 2K
   Shuffle Deck:           8C 2H QC 9D 4S 10D 8D 6D 5H JS 5D KS 6C 9H 6H JC KC 3H 7C 3C 8H 7H 4H 5C 5S 4C AC 4D AH QH QS JD 9S 2S 3S 2C 10S JH 9C KH 10H 7D 10C KD 8S 6S 7S QD AD 2D 3D AS
   Sort Deck:              AS KS QS JS 10S 9S 8S 7S 6S 5S 4S 3S 2S AH KH QH JH 10H 9H 8H 7H 6H 5H 4H 3H 2H AD KD QD JD 10D 9D 8D 7D 6D 5D 4D 3D 2D AC KC QC JC 10C 9C 8C 7C 6C 5C 4C 3C 2C

还包括了用于 spadespinochleskatcanastaeuchrehandandfoottarot 的示例程序,以及示例 pokerbridge 手牌。

详细信息

本库的目标是能够支持创建各种大小和花色的牌组。库默认支持

项目利用了 Project FluentRust 支持,以提供国际化。当前支持的语言包括 英语德语

责任

  • 表示特定类型的牌组。
  • 验证一组牌对该类型牌组是否有效。
  • 创建可以序列化和反序列化的牌组的文本表示。
  • 洗牌
  • 验证在给定一系列弃牌的情况下,特定的牌是否可玩。
  • 确定两种牌组类型是否可翻译。

参考

其他扑克牌库

依赖项

开发依赖项

  • rstest - 基于 fixture 的 Rust 测试框架

待办事项

依赖项

~7–16MB
~197K SLoC