dgifford / deck
v5.1.1
2024-03-31 17:16 UTC
Requires
- php: >=8
- dgifford/array-access-trait: ^1.1
- dgifford/iterator-trait: ^1.1
Requires (Dev)
- phpunit/phpunit: ^10.1
README
尽可能真实地模拟一副扑克牌。
一副牌可以包括从“Bicycle 新牌顺序”到字母牌的任何组合,并使用现实世界的洗牌方式(如切牌、洗牌或法罗洗牌)进行混合。
牌可以反转或旋转,就像现实生活中一样。
随机性
使用了原生的PHP函数random_int()
来生成随机性。这提供了随机性(根据PHP手册),适用于需要无偏结果的场景。
洗牌
提供的方法试图模拟人类行为。例如,在切牌方面,一个真正的随机切牌在任何牌堆位置出现的概率是相等的,然而,一个人最有可能在牌堆中间三分之一的位置切牌,因此提供了一个“中间三分之一”的切牌选项。
进行过顶洗牌的人可以抽出大小不同的牌块,并且通常会在牌堆快结束之前停止。过顶洗牌方法允许你调整这一点,提供最小和最大块大小的参数,以及抛出剩余牌堆的阈值。
牌堆/卡片数据结构
牌堆中的牌通过递增索引标识,其中0是牌堆的“顶部”。默认情况下,在所有操作之后重置此索引。
牌有以下属性
id
一个不可变的唯一整数ID,可以跟踪重复的牌。front
代表卡片正面的字符串。back
代表卡片背面的字符串。selected
如果卡片被选中在牌堆中。reversed
如果卡片被反转,例如,在牌堆中是“面朝下”。revolved
如果卡片被旋转,例如,非对称的牌(如宫廷牌)被旋转。
卡片可以有代表正面或背面的任何字符串,但是像ah
这样的字符串将被识别为标准类型,例如,ah
是heart
。
待办事项
添加卡片类型
ESP符号
未索引
添加反法罗洗牌
添加切牌洗牌
添加发牌
成堆
向上/向下和向下/向上