5个稳定版本
1.4.0 | 2024年6月18日 |
---|---|
1.3.0 | 2024年4月12日 |
1.2.0 | 2024年4月11日 |
1.1.0 | 2024年4月11日 |
1.0.0 | 2024年4月10日 |
#1 在 #represents
每月下载量33
27KB
457 行
一个用于高效表示卡片的轻量级库
StandardCard
库提供了一个程序员友好的方式来表示一副52张的标准牌。
它既重视快速访问卡片信息,又注重最小的存储占用,使其非常适合各种游戏开发或卡片操作任务。
卡片定义
一张卡片是一个由四个字节组成的整数。高字节用于存储等级的位模式,而低字节则存储卡片的类型/等级/素数值。
xxxAKQJT | 98765432 | cdhsrrrr | sspppppp |
---|---|---|---|
xxxbbbbb | bbbbbbbb | cdhsrrrr | sspppppp |
其中
键 | 定义 |
---|---|
p | 等级的素数 |
s | 卡片的类型(黑桃=00,红心=01,方块=10,梅花=11) |
r | 卡片的等级 |
cdhs | 根据卡片的类型打开的位(黑桃=0001,...,黑桃=1000) |
b | 根据卡片的等级打开的位 |
例如,红心5(5h)表示为
xxxAKQJT | 98765432 | cdhsrrrr | sspppppp | |
---|---|---|---|---|
00000000 | 00001000 | 00100011 | 01000111 | = 0x00082347 = 533319 |
以下表格中提供了有关卡片的更多信息
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | J | Q | K | A | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
等级 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
素数 | 2 | 3 | 5 | 7 | 11 | 13 | 17 | 19 | 23 | 29 | 31 | 37 | 41 |
52张牌的牌组
基于之前的卡片定义,让我们看看标准52张牌组的值表
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | J | Q | K | A | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
黑桃 | 98306 | 164099 | 295429 | 557831 | 1082379 | 2131213 | 4228625 | 8423187 | 16812055 | 33589533 | 67144223 | 134253349 | 268471337 |
红心 | 81986 | 147779 | 279109 | 541511 | 1066059 | 2114893 | 4212305 | 8406867 | 16795735 | 33573213 | 67127903 | 134237029 | 268455017 |
方块 | 73858 | 139651 | 270981 | 533383 | 1057931 | 2106765 | 4204177 | 8398739 | 16787607 | 33565085 | 67119775 | 134228901 | 268446889 |
梅花 | 69826 | 135619 | 266949 | 529351 | 1053899 | 2102733 | 4200145 | 8394707 | 16783575 | 33561053 | 67115743 | 134224869 | 268442857 |
优点
-
最小内存使用
:数据结构可以用单个标识符表示所有卡片信息。 -
更快查找
:由于使用了位运算符,检索卡片信息成为常数时间操作。