在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作为卡属性,以及每个属性的列表:RANKSSUITS。这些列表定义了卡片的排序顺序 财产。特定的等级和套装也可以作为 常数——TWOQUEENHEART等等。

StandardCard是您的普通扑克牌。它有一个等级,一套西装,还有 一个名字。你可以互相比较标准卡 等级少于等级较高的牌,等级较低的牌 西服比西服更高、等级相同的牌少。(A) 在默认实现中处于高位。上升的西装顺序是梅花, 钻石、红心、黑桃、跟桥。)

StandardHand是你持有的标准卡。把它递给 整齐的字符串表示(如示例中所示),以及另外两个 方法:

  • .by_rank(Rank)返回包含卡片的新标准手 从你手上拿着的。它不会删除它们 从你手中。
  • .by_suit(Suit)是同一件事,除了西装。

最后,make_deck()是一个顶级函数,它只创建一个完整的 一副牌,定义为 军衔和军装。默认情况下,它仍然按顺序返回;pass shuffle=True先洗牌。

婴儿床

克里贝奇执行克里贝奇的手评分规则(但不是 游戏规则)。它的主界面是score_hand(),它需要 standardhand并返回一个成对的字典(“score type”:points)。 您还可以传递它turned=StandardCard和布尔参数 cribdealer覆盖所有评分可能性。

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,取决于翻牌和是否 处理。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring MVC 4.0 RequestMapping无值,基于methodname   java Samsung 10 plus不允许wifi p2p发现   春爪哇。伊奥。IOException:找不到文件   java JasperReport饼图示例   java我试图使用mockito注释来测试我的代码,但无法解决mockito异常   命令行界面Java:制作简单的交互式cli应用程序   java jdk1之间的区别是什么。7_9 9和jdk1。7_271   java重载一个被重写的、继承的方法   java LazyInitializationException春季启动   java Play Framework 2.2.1 3个表之间存在大量关系