Mahjong是亚洲最受欢迎的游戏之一(不是 Windows 7 中的单人纸牌游戏)。那里有很多麻将游戏,包括来自 Yahoo 的在线游戏或 DOS 时代的离线游戏!
又有一天我在想,我怎么能写一个(不包括 GUI)?
数据建模部分很简单。
获胜和计分规则是……模式匹配?
游戏的战略部分是最困难的部分,例如确定要扔掉哪张牌以及何时下棋或棋棋。如何实现?
谢谢!
研究:
- 麻将演示(日式):http://www.nobleflash.com/game/4495/Japanese-Mahjong.html
- http://www.ninedragons.com/ - 我以前玩的一个麻将游戏,它的计分系统:http://www.ninedragons.com/mahjong/scoring2.html
- 函数式语言更适合?以什么方式? Is F# a good language for card game AI?
- 人工智能麻将 - http://www.stanford.edu/class/cs229/proj2009/Loh.pdf
最佳答案
读这个
http://homepage.mac.com/s_lott/books/python/html/p05/p05c05_mahjongg.html
这可能会有所帮助。
“决定扔掉哪一张牌”实际上非常简单。考虑到弃牌和手牌的性质,定义“准备好的”手牌就是确定哪些潜在牌组具有最多可用(非弃牌,非进行中)牌。
每个板 block 都属于几种可能的模式之一(对子,最多 3 个松狮犬,碰碰,杠)。计算填充图案所需的瓷砖很容易。根据播放的内容和显示的内容很容易减少可能的图 block 数量。可以对产生的可能模式进行排序。丢弃物是从最难填充的组合中挑选出来的。
[查看此 http://www.amazon.com/Mah-Jong-Handbook-Play-Score/dp/0804838747]
关于algorithm - 如何实现麻将游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4074054/