dgifford/deck

用于操作牌堆中的扑克牌的类

v5.1.1 2024-03-31 17:16 UTC

This package is auto-updated.

Last update: 2024-08-31 00:25:55 UTC


README

尽可能真实地模拟一副扑克牌。

一副牌可以包括从“Bicycle 新牌顺序”到字母牌的任何组合,并使用现实世界的洗牌方式(如切牌、洗牌或法罗洗牌)进行混合。

牌可以反转或旋转,就像现实生活中一样。

随机性

使用了原生的PHP函数random_int()来生成随机性。这提供了随机性(根据PHP手册),适用于需要无偏结果的场景。

洗牌

提供的方法试图模拟人类行为。例如,在切牌方面,一个真正的随机切牌在任何牌堆位置出现的概率是相等的,然而,一个人最有可能在牌堆中间三分之一的位置切牌,因此提供了一个“中间三分之一”的切牌选项。

进行过顶洗牌的人可以抽出大小不同的牌块,并且通常会在牌堆快结束之前停止。过顶洗牌方法允许你调整这一点,提供最小和最大块大小的参数,以及抛出剩余牌堆的阈值。

牌堆/卡片数据结构

牌堆中的牌通过递增索引标识,其中0是牌堆的“顶部”。默认情况下,在所有操作之后重置此索引。

牌有以下属性

  • id 一个不可变的唯一整数ID,可以跟踪重复的牌。
  • front 代表卡片正面的字符串。
  • back 代表卡片背面的字符串。
  • selected 如果卡片被选中在牌堆中。
  • reversed 如果卡片被反转,例如,在牌堆中是“面朝下”。
  • revolved 如果卡片被旋转,例如,非对称的牌(如宫廷牌)被旋转。

卡片可以有代表正面或背面的任何字符串,但是像ah这样的字符串将被识别为标准类型,例如,ahheart

待办事项

  • 添加卡片类型

    • ESP符号

    • 未索引

  • 添加反法罗洗牌

  • 添加切牌洗牌

  • 添加发牌

    • 成堆

    • 向上/向下和向下/向上