当前位置: 首页 > 后端技术 > Node.js

nodejs版,智能麻将机器人出牌算法

时间:2023-04-03 16:03:46 Node.js

nodejs版,智能麻将机器人出牌算法。麻将简介,起源于中国,粤港澳闽南地区俗称麻雀,中国古代发明的一种游戏,娱乐用具,一般用竹、骨或塑料制成的小长方块,上面刻有图案或者说,北方麻将每套有136张牌,而南方麻将的花牌又多了八张,分别是春夏秋冬梅竹兰菊,共144张牌。项目请加星号保存仓库地址,方便以后学习使用。如何使用github地址#下载gitclonehttps://github.com/wallace5303/nodejs-game.git#进入文件cdnodejs-game/aiTable#安装npminstall#运行nodedemo.jsdemocontent#所有对应的数字麻将牌id,请查看配置文件:cardConfig.jsonconstoutCardLogic=require('./outCardLogic');//手牌10,000,20,000,30,000,80,000,80,000,1,5constcards=['31','32','33','38','38','41','45'];//选择最好的牌varoutLogic=newoutCardLogic();//第二个参数是百搭牌,选修的。varcard=outLogic.outAI(cards);console.log("选择的最佳卡片是:%j",card);//41(1)sortedcards(total28)windcards:East,South,west,north,各4张,共16张。箭牌:中号,毛发,白色,各4个,共12个。花牌(共8张):春、夏、秋、冬、梅、兰、竹、菊各一张,共8张。注意:此牌会在极少数麻将中使用。序牌(共108张)万张子牌:1万到9万,每张4张,共36张。管卡:从一管到九管,每管4张,共36张。也有称为面包的地方,从一个面包到九个面包。梭牌:一到九,各4张,共36张。也有叫条的地方,从一到九不等。相关术语麻将的五个标准状态是“吃”、“摸”、“杠”、“听”、“呼”。在正式比赛中,五州的官方语言是中文,包括国际比赛。吃:上家出一张牌,下家的牌刚好成顺子,他就可以吃。摸:别人出牌时,如果自己手上有两张相同的牌刚好成一对碰,自己就可以摸。杠:别人出牌时,如果你手上有三张相同的牌,就可以出杠,称为明杠。当你摔倒杠铃后,抓起该行末尾的一张牌,打出你手中不需要的牌。.手上有三张一模一样的牌,抓到另一张一模一样的牌,叫暗杠,扣。别人不知道是什么牌,然后在行尾抽一张牌,打出手中不需要的牌。“露杠”优先于“抓”。如果你要吃的牌刚好是出牌方接下来要吃的牌,则出牌失败,出牌成功。听牌:当你把手中的牌全部变成有用的牌后,只需要加最后一张牌开牌,就可以进入听牌阶段。只能打出这一轮抽到的牌。并且:(读音:hú,ㄏㄨ)当最终牌型满足mAAA+nABC+DD(m,n可以为0)时,可以抽牌(少数特殊牌型除外)。四位玩家中谁先抽到牌,谁就获胜,分数乘以底数。这取决于游戏的详细规则。牌型术语莲子:120,000和30,000pungs:一缸,一缸,一将:一张中奖公式N×Lianzi+M×Pung+1×JiangN>=0,M>=0Joker小丑的定义是一张可以变成任何牌的牌,也叫百搭牌。案例分析举个栗子,看看真人是怎么看待打牌的:12300,5张牌,5张牌,12300,1张牌,1张牌,6张牌,6张牌。从上面的解题思路可以看出,出牌的过程其实就是游戏结束后的牌面,赢牌的概率是最高的。因此,该算法就成为了评估牌区得分的算法。牌越高,牌越好,打出牌的概率就越高。评价方法为了评价这副牌的点数,也就是赢牌的概率,我们可以给他抽N张牌,看看赢牌的情况。参考下面的例子,可以直观的得到牌面得分:1柱面、2柱面、3柱面>1柱面、2柱面、3柱面、2条3条面>1柱面、2柱面、3柱面、2面带子。1缸2缸3缸已经打完了,赢的概率是11缸2缸3缸2张只抽1张,那么只有抽到2张才赢,中奖概率是1/9*抽条概率,会有。1桶、2桶、3桶、2条、3种只抽1张牌,那么只有4抽1张才赢。中奖概率为2/9*抽条概率,没有王牌。表格生成有了评价方法后,我们只需要为手牌的每一花色分配N张牌给他,然后计算出牌的赢牌概率就可以知道牌面得分了。但是考虑到计算量太大,我们可以提前使用查表法计算,方便快速查找。出牌算法遍历手中的非工作牌,计算排除这张牌后牌面面积的最大值。这张牌是要打的牌。如果你能抽一张牌,拿一张抽牌最多的牌来玩。