I'm starting to provide Chinese / English versions of some articles, switch with the Language menu above. 我开始提供部分文章的中文、英文翻译,请使用顶部语言菜单切换。

Rummy 拉米纸牌记牌程序

英语课上,外教给我们介绍了 Rummy 这种纸牌游戏。这种纸牌游戏没有官方规则,因此在民间有多个变种。

外教给我们介绍的这种规则如下:

游戏需要至少一副扑克牌,取决于人数,去掉所有的大小王。

开局时,每人发到 7 张扑克牌。发牌结束后,将牌堆顶的一张牌翻开放在一边。

每位玩家行动时,需要如下操作:

1. 选择从暗牌堆中拿最顶上的一张牌,或者从一边的明牌堆中取出任意数量的牌。

当你从明牌堆中取牌,你必须在本回合内按照 2 所述条件使用掉你取到的最下面一张牌。(不能留在手里,不能弃掉)

2. 当你手里的牌符合一下条件,可以将它们放置在你的桌面上:

2.1. 有至少 3 张同花的牌组成顺子,例如草花 A23,黑桃 10JQ,红桃 QKA。(KA2 不算)

2.2. 有 3 张或 4 张数字相同但花色两两不同的牌。

例如,黑桃、红桃、草花 3 是符合规定的,而黑桃、黑桃、红桃 3 不符合规定。后一种情况仅可能在使用多副扑克牌时出现。

2.3. 有一张牌,可以接续如 2.1 和 2.2 所述的顺子或者同数字牌组。

3. 当你打出一张牌,使得某一个顺子或者同数字牌组无法再接续下去,所有玩家将自己桌面上属于这个顺子或者同数字牌组的扑克牌翻面(Closed)。

例如,当使用一副扑克牌时,场上有顺子草花 A2345 和同数字牌组黑桃、红桃、草花 6。此时,顺子在两个方向上均无法接续下去,因此应被翻面。如果接下来有玩家打出方块 6,上述同数字牌组也应被翻面。

4. 从手牌中取一张牌,放置在明牌堆的最顶上(弃牌)。注意保证明牌堆的每一张牌都能被任何一个玩家看到。

5. 此时所有玩家可以查看你放置的牌。如果你的牌可以接续如 2.1 和 2.2 所述的顺子或者同数字牌组,其它玩家可以喊出 Rummy(拉米),将这张牌据为己有并立即打出。

6. 当有玩家弃牌后手中无牌,或者暗牌堆发完并且无人能按上述规则使用明牌堆的牌,游戏结束。

7. 计分:每人桌面上的每张 2-9 计 5 分,10-K 计 10 分,A 计 15 分。

每人手中的每张 2-9 计 -5 分,10-K 计 -10 分,A 计 -15 分。


不是那么明显的分割线


但是在实际游戏中,由于场上人数多,无法保证所有人都能看到明牌堆以及每人桌上的牌,导致经常有 Rummy 的情况发生,我也被坑了好几次。于是我制作了一个记牌程序以记录场上情况。

由于需要在电脑和手机上使用,因此这个程序是用 Javascript 写在网页上的。这个程序有两个版本。

第一个是用于只有一副牌的情况,可以提供记牌、分离显示顺子 / 同数字牌组、提示本回合可用牌(Rummy)的功能。这个版本可以点这里访问到。

屏幕快照 2016-09-18 下午4.55.44.png

第二个可以用在多副牌的游戏中,可以记牌,添加多组同花色的顺子,但不能提示 Rummy。这个版本可以点这里访问到。

(同学觉得提示 Rummy 是作弊,我就删了。我只在需要多副牌的人数多的游戏中需要程序辅助记录,因此我保留了上面那个版本的 Rummy 提示功能,反正我不用)

屏幕快照 2016-09-18 下午4.56.46.png

和往常一样,源代码可以直接右键查看。不过因为我开了 PageSpeed,代码会被压缩得比较惨。你可能需要一些 Javascript 排版工具来辅助阅读。

沃通你咋不上天呢!
下一篇文章 »
« 上一篇文章
GetIPIntel 反欺诈服务

本站使用运行在 Vercel 上的 Waline 评论系统,中国大陆访问可能不稳定。