如何实现一个麻将游戏?

麻将是亚洲最流行的游戏之一(不是Windows 7中自带的纸牌接龙)。市面上有很多麻将游戏,包括雅虎上的在线游戏和DOS时代的离线游戏!

有一天我在想,如何编写一个麻将游戏(不包括GUI)?

数据建模部分很简单。

胜负和计分规则是… 模式匹配吗?

游戏中的策略部分,例如决定扔哪张牌,以及何时进行吃、碰操作,是最难的部分。 如何实现这一点?

谢谢!

研究:


回答:

阅读此内容

http://homepage.mac.com/s_lott/books/python/html/p05/p05c05_mahjongg.html

它可能会有所帮助。

“确定扔哪张牌”实际上非常简单。 考虑到弃牌和手牌性质,定义“听牌”就是确定哪些潜在的组合拥有最多的可用牌(未弃牌,未在游戏中)。

每张牌属于几种可能的模式之一(对子,最多3个顺子,刻子,杠)。 计算填满该模式所需的牌很容易。 根据已打出的牌和暴露的牌,减少可能牌的数量很容易。 由此产生的可能模式可以进行排名。 弃牌从最难填满的组合中选择。

[参见此书http://www.amazon.com/Mah-Jong-Handbook-Play-Score/dp/0804838747]

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注