请问如何用VS写出基本的麻将AI
求一段代码输入一串数字(每个数字对应麻将的一张牌 数字个数<=14)
输出一个数字 这个数字是麻将规则下 目前应该打出来的牌
我不太懂编程 但是我知道人类分析麻将是如何分析的 这里贴出来 求大神们指导代码应该怎么写
方法说明:
先要定义一些概念(这里跟网上的麻将基础教程是一样的)
孤张:单张牌 没有其他牌和他形成对子或者搭子
举例: 单张字牌是孤张 1万在手中没有1、2、3万的时候是孤张 5条在没有3-7条时是孤张
孤张向下分为三种:
幺九:19万 19饼 19条
偏张:28万饼条
中张:3-7
搭子:万饼条中 2张有关系的牌组成搭子
比如12万 57条 89饼都算作搭子
搭子向下有3种情况:
坎张、单边张、两边
坎张是等中间那张 即57条
单边张是只能等一侧的一张 如12万、89饼
两边就是两边都能等的 如 34条 67万
对子:两张一样的牌……
面子:形成abc或者ddd形式的 比如 234万 666饼 东风东风东风
牌效率理论是 面子>对子>搭子>孤张
搭子中 两边>坎张=单边张
孤张中 中张>偏张>幺九>字牌
程序的过程就是 然后确定每一张牌的类型 给他赋值 寻找效率最低的牌(得分最低的) 把它打出去 就这样
说明:
1:不考虑有效牌丢失的问题 就算3万被别人打出去3个 我们假装不知道。但是对于死张要知道 就是某个牌被人杠过 这张牌就彻底死了 不要再去等它了 输入的时候输入一些死张 让程序也要学会处理
2:不考虑胡牌问题 胡牌的计算更麻烦
3:复合牌应该怎么弄我没有思路 求大神们一并考虑复合牌应该怎么写 比如122334万 这个是一个完整型 你要是弄出来2个对子+2个孤张就太傻了……