在python中使用通用游戏卡的基本工具。
protocards的Python项目详细描述
原型卡
是用python实现纸牌游戏逻辑的库。它被设计成 具有足够的泛型来构建唯一的卡类型,但也实现了一个标准 为方便起见,可使用扑克牌。基本用法很简单:
>>> from protocards.standard import make_deck
>>>
>>> deck = make_deck(shuffle=True)
>>> hand = deck.deal(5)
>>> print(hand)
AJ6s 2h 3c
>>> print(hand[0])
Ace of Spades
cribage模块使用protocards实现了一些示例游戏逻辑。
>>> from protocards.standard import make_deck
>>> from protocards.cribbage import score_hand
>>>
>>> deck = make_deck(shuffle=True)
>>> hand = deck.deal(4)
>>> turned = deck.pop()
>>> print(hand)
Jh 8d QTc
>>> print(turned)
Six of Spades
>>> score_hand(hand, turned)
{'runs': 3, 'fifteens': 0, 'pairs': 0, 'nobs': 0, 'flush': 0, 'heels': 0}
包摘要
基础
基类用于抽象类,它们可以在 简单的项目或子类来构建更复杂的机制。
CardProperty
是卡片可以属于的一个类别,如“spade”
或者“三”或者“绿”或者“飞”,这个基类只有一个名字;
将其子类化以添加其他属性,或仅具有新类型
为了便于比较。
Card
是一个占位符,它为
它的子类。
Hand
是存储卡的容器。它的行为就像一个列表
它可以被索引或切片,并实现标准列表
以及这些方法:
.shuffle()
与.sort()
相反。.deal(n)
删除指定的卡数并返回它们 作为一个新的Hand
。
标准
标准实施标准52卡组。它定义了Rank
以及Suit
作为卡属性,以及每个属性的列表:RANKS
和
SUITS
。这些列表定义了卡片的排序顺序
财产。特定的等级和套装也可以作为
常数——TWO
、QUEEN
、HEART
等等。
StandardCard
是您的普通扑克牌。它有一个等级,一套西装,还有
一个名字。你可以互相比较标准卡
等级少于等级较高的牌,等级较低的牌
西服比西服更高、等级相同的牌少。(A)
在默认实现中处于高位。上升的西装顺序是梅花,
钻石、红心、黑桃、跟桥。)
StandardHand
是你持有的标准卡。把它递给
整齐的字符串表示(如示例中所示),以及另外两个
方法:
.by_rank(Rank)
返回包含卡片的新标准手 从你手上拿着的。它不会删除它们 从你手中。.by_suit(Suit)
是同一件事,除了西装。
最后,make_deck()
是一个顶级函数,它只创建一个完整的
一副牌,定义为
军衔和军装。默认情况下,它仍然按顺序返回;pass
shuffle=True
先洗牌。
婴儿床
克里贝奇执行克里贝奇的手评分规则(但不是
游戏规则)。它的主界面是score_hand()
,它需要
standardhand并返回一个成对的字典(“score type”:points)。
您还可以传递它turned=StandardCard
和布尔参数
crib
和dealer
覆盖所有评分可能性。
score_hand()有一系列的helper函数,可以调用
单独使用标准指针:score_fifteens()
等返回
整数,check_flush()
返回布尔值。它也有
value()
函数,它接受标准卡并返回点
那张卡的价值(对于五岁的孩子和游戏)。
我最初写这个是因为我想知道 整副牌的得分是。现在我可以知道了!
>>> from protocards import standard, cribbage
>>>
>>> def score_deck():
... score = cribbage.score_hand(standard.make_deck())
... for key, value in score.items():
... if value:
... print("{} for {:,}".format(key, value))
... print("total: {:,}".format(sum(score.values())))
...
>>> score_deck()
runs for 872,415,232
fifteens for 34,528
pairs for 156
total: 872,449,916
鞋跟/鞋跟加1-2,取决于翻牌和是否 处理。