8个版本
0.4.0 | 2020年2月18日 |
---|---|
0.3.5 | 2019年1月8日 |
0.3.4 | 2016年9月12日 |
0.3.3 | 2016年7月28日 |
0.1.0 | 2016年4月3日 |
#1170 在 游戏开发
41 每月下载量
44KB
1K SLoC
牌组
这是一个用Rust实现的简单库,用于模拟牌组。您可以使用它创建牌组,洗牌,一次或多次发牌。
Cargo导入
您可以通过将以下内容添加到您的Cargo.toml中以标准方式使用该模块。除非您有其他原因,否则您应该使用最新发布的版本。
[dependencies]
deckofcards = "0.4"
API文档
一旦添加了依赖项,您可以通过以下方式获取类文档
cargo doc
用法
Deck类包含零个或多个Card,这些Card被保存在已发牌或未发牌的堆中。您可以使用 shuffle()
洗牌。您可以使用 deal_one()
发一张牌或 deal_many()
多张牌。您可以使用 reset()
将已发牌返回到未发牌堆。
use deckofcards::*;
let mut deck = Deck::new();
默认情况下,如果您不洗牌,您的牌组将按花色排序,然后按等级排序。您可以使用随机化的Knuth洗牌算法来洗牌
deck.shuffle();
您可以将牌发到 Vec<Card>
let cards = deck.deal(5);
或到 Hand
对象,该对象提供额外的排序和过滤。
let mut hand = Hand::new();
deck.deal(&mut hand, 3);
每张牌都有一个 Rank
和一个 Suit
,两者都是强枚举类型。
牌可以比较、排序,并具有使用英语符号打印长描述和短描述的辅助程序,例如“黑桃A”或“AS”。
宏
该crate提供便利的 card!
和 hand!
宏,用于将牌或手牌作为文本声明
#[macro_use]
extern crate deckofcards;
//... A Card that is the King of Clubs
let card = card!("KC");
//... A Hand that is Ace of Spades, 3 of Diamonds, Queen of Clubs
let hand = hand!("AS", "3D", "QC");
示例
在 examples/main.rs
中有一个示例,您可以查看它是如何工作的。
cargo run --example main
测试
有一些大约30个单元测试。
cargo test
依赖项
~525KB