您的位置:首页 > 新闻频道 > 国际新闻 > 各地要闻>正文

同城游:游戏史上最难的问题是什么? 教程序员打麻将

时间:2018-09-27 15:51:05    来源:同城游    浏览次数:    我来说两句() 字号:TT

  上周,隔壁的程序猿小哥来求助:中秋节要跟女朋友回四川见家长了,从来没有打过麻将的他在听说“四川人命都可以不要,但必须要打麻将”后,整天担心会被老丈人、丈母娘嫌弃,脱发量也开始日益激增。

  有什么方法能1秒教会程序员打麻将?公式拿好不谢。

111.png

  也就是说,必须满足size%3 == 2的形式才算胡牌。你学会了吗?

888.png

  光会背公式不行,得实践出真知。一心要讨老丈人欢心的小哥哥提出让我们陪练几晚,在他的声(chou)泪(bu)俱(yao)下(lian)的恳(wei)求(xie)下,愣是一局麻将战到天明,害得我第二天上班脑袋昏昏沉沉挨了不少骂。

  熬夜,就困成了个皮皮,再来几次怕是要命丧当场,我果断跟小哥祭出了压箱底的游戏秘籍——同城游APP,在这里面玩四川麻将的时候还能听到地道的四川方言,玩法正宗,随时随地都能玩,再也不用找人熬夜苦练了。

222.png

  事后小哥哥对打麻将的总结,也让我等凡人长了见识。

  写代码时最核心的是数据结构,回到麻将游戏上就得设计一个“麻将结构”——麻将本身是一个集合,这个集合分为两大类:桌面上的麻将,人手上拿的13张麻将。

  (1) 桌面上的麻将——它的,值是恒定的,只能被随机delete不能被add,为空后游戏结束。(这就是3个算法)

  (2) 人们手上的麻将——它的值始终是恒定的,随机add,选定delete,每delete一次,同时被从桌面麻将上add一个进来。(这是4个算法)

  说人话就是:打麻将时桌面上的麻将数只会少不会多,而手上的麻将数量是不变的。Emmm…这还得编个算法?

333.png

  当拿到一副麻将时,第一步应该是“分解”,排除手里“缺一门”的牌之后,按照牌型分解成三个数组,然后按照上面的公式出牌就行了。

  俗话说“打牌胡牌靠手气,对此说法要同意”,为了验证这句话的真实性,小哥专门写了个脚本,演算了一下四川麻将中出现天胡与地胡的概率。

444.png

  结论就是:打四川麻将地胡的概率是320万分之一,至于天胡嘛,抽样4.8亿次没有出现一次天胡,所以还没算出来…

  除了复杂的规则和捉摸不定的运气,打麻将时的另一难点就是猜牌,根据自己的牌和打出去的牌,以及对手的表情和行为,来推测对方手里会有什么牌,这不仅是对记忆力的考验,更是一场心理上的博弈。要想get猜牌技能,就得在牌桌上多累积点经验了。

  除了四川麻将外,同城游APP里还有800多款热门游戏,小哥哥们快操练起来见家长啦!


免责声明:本文仅代表作者观点,与新讯网无关。新讯网不对文章所包含内容的准确性、可靠性或完整性提供任何保证。请读者仅作参考,并自行承担全部责任。

请选择您浏览此新闻时的心情

相关新闻
网友评论
本文共有人参与评论
用户名:
密码:
验证码:  
匿名发表