标题:请问如何用VS写出基本的麻将AI
取消只看楼主
gaosi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-7-21
结帖率:0
已结贴  问题点数:20 回复次数:1 
请问如何用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个孤张就太傻了……
搜索更多相关主题的帖子: 麻将 如何 网上 
2016-07-21 22:33
gaosi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-7-21
得分:0 
以下是引用yangfrancis在2016-7-22 18:04:42的发言:

那几个概念的思路理得太简单,按照那个来设计AI很容易打出很低级的牌。比如在3445和3459两种牌面里,这个AI会认为9是孤张,把它的估价计算为比3445低,事实上3445只能胡4,且自己已抓了两个,是很差的牌。
我在试着想一些综合性比较高的算法 但是从算法就不会 更别提程序实现了
2016-07-23 16:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-467111-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.266237 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved