英语课上,外教给我们介绍了 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)的功能。这个版本可以点这里访问到。
第二个可以用在多副牌的游戏中,可以记牌,添加多组同花色的顺子,但不能提示 Rummy。这个版本可以点这里访问到。
(同学觉得提示 Rummy 是作弊,我就删了。我只在需要多副牌的人数多的游戏中需要程序辅助记录,因此我保留了上面那个版本的 Rummy 提示功能,反正我不用)
和往常一样,源代码可以直接右键查看。不过因为我开了 PageSpeed,代码会被压缩得比较惨。你可能需要一些 Javascript 排版工具来辅助阅读。