桌游的苦恼:卡坦岛随机骰子

最近有点迷桌游,在家里买了一大堆,又苦于周边朋友并没有对桌游很感兴趣。从买一堆自己觉得『可能好玩』的游戏而最终无人陪玩,到绝望的面对现实、挑了一堆二人桌游每日和郭老师捉对厮杀,对桌游的偏好是这样变化的——最开始觉得『无尽杀戮Zombicide』『僵尸商场Mall of Horror』『冷战热斗Twilight Struggle』『电厂大亨Power Grid』这种比较纯粹的美式剧情、德式策略比较有趣,而后转向了人数少、策略轻的德式放置游戏(当然对『我是大老板I’m the boss』和『抵抗组织Resistance』这类口炮撕逼游戏的爱,从未消失)。『卡卡颂carcassonne』『璀璨宝石Splendor』是郭老师的最爱,我们几乎每晚都要来一两局。
1.pic
今天下午,郭老师的发小张同学,抱着一堆主板、硬盘等来到我家,让我帮她把机器攒好,顺便三个人一起开了两局璀璨宝石,中间穿插了一局欢乐向的『水瓶座Aquarius』,最后以『卡坦岛Catan』收尾。
问题出在卡坦岛上。
不知是由于骰子本身质量不均、还是扔骰子的环境有问题,出来的数字总是高度集中于某几个数、似乎完全违背了骰子数随机分布的原理,并且每次轮到郭老师时,几乎有50%的概率会扔出一个7,于是按规则,强盗出动,郭老师开始抢劫另外两名玩家。
最终在完全不平衡的骰运支持下,郭老师以大比分差距赢得了本轮卡坦岛。严谨的我开始思考一个问题——如果不解决骰子的问题,估计以后都别想好好玩卡坦岛了。仔细想了想,开始动手写一个卡坦岛电子骰子。
考虑到骰子的随机性,和游戏期间的多次掷骰,一定是random模组+循环的结构。

# -*- coding:utf-8 -*-
from random import randint
from sys import exit
def roll():
    a = randint(1, 6)
    b = randint(1, 6)
    write = raw_input("Press enter to roll >>>>>")
    if write == "":
        print "Dice A = ", a
        print "Dice B = ", b
        print "Sum is >>>>>>>>> ", a + b ," <<<<<<<<<"
    elif write == "quit":
        exit(0)
    else:
        print "Press ENTER BUTTON please!"
    roll()
roll()

 
用Python来解决实际生活中的问题,编写这个十几行的小程序给自己带来很大的快乐。下次再玩卡坦岛,就不用骰子了,哼!
最后,再安利一下桌游。大学时候曾经去桌游吧玩过,没觉得有什么特别的,最近泡在百度桌游吧,才知道桌面游戏这个领域也是博大精深、能人辈出。有兴趣的朋友可以去浏览一下两个台湾90后正在众筹的一款以台湾政治生态为主题的桌游『政治风暴』(https://www.flyingv.cc/project/8972),意淫一下大陆版应该怎样设计。

Tagged : / /