麻将选牌 [问题点数:200分,结帖人jmmx]

Bbs1
本版专家分:0
结帖率 96.34%
Bbs7
本版专家分:16933
版主
Blank
红花 2013年11月 硬件/嵌入开发大版内专家分月排行榜第一
Blank
黄花 2014年7月 硬件/嵌入开发大版内专家分月排行榜第二
Blank
蓝花 2013年10月 硬件/嵌入开发大版内专家分月排行榜第三
2013年6月 硬件/嵌入开发大版内专家分月排行榜第三
2013年3月 硬件/嵌入开发大版内专家分月排行榜第三
Bbs2
本版专家分:120
麻将胡牌算法
各种语言的<em>麻将</em>胡牌算法。干货。 c++ c# lua go js<em>麻将</em>胡牌算法
erlang-麻将胡牌
最近休息在家,闲来晚上谢谢服务端开发,还是使用之前比较有点点熟悉的erlang,最近棋牌挺火爆!使用erlang实现下<em>麻将</em>胡牌,测试已经可以!  下面是部分代码(写不好不要吐槽!哈哈):全部代码到git https://github.com/StartHua/erlang-- checkHu(UserPai) -> T = getMyPaisForRecord(UserPai,#r_us
麻将胡牌算法 ,
c++ <em>麻将</em> ,胡牌 算法 ,c++ <em>麻将</em> ,胡牌 算法,c++ <em>麻将</em> ,胡牌 算法 ,c++ <em>麻将</em> ,胡牌 算法,c++ <em>麻将</em> ,胡牌 算法 ,c++ <em>麻将</em> ,胡牌 算法,c++ <em>麻将</em> ,胡牌 算法 ,c++ <em>麻将</em> ,胡牌 算法,c++ <em>麻将</em> ,胡牌 算法 ,c++ <em>麻将</em> ,胡牌 算法,c++ <em>麻将</em> ,胡牌 算法 ,c++ <em>麻将</em> ,胡牌 算法,
华为机试-麻将胡牌
华为机试-<em>麻将</em>胡牌
麻将吃牌的判断
[code=C/C++]rnBYTE CGameLogic::EstimateEatCard(BYTE cbCardIndex[MAX_INDEX], BYTE cbCurrentCard)rnrn ASSERT(IsValidCard(cbCurrentCard));rnrn if (cbCurrentCard>=0x31) rn return WIK_NULL;rnrn //变量定义rn BYTE cbExcursion[3]=0,1,2;rn BYTE cbItemKind[3]=WIK_LEFT,WIK_CENTER,WIK_RIGHT;//吃牌类型rnrn //吃牌判断rn BYTE cbEatKind=0,cbFirstIndex=0;rn BYTE cbCurrentIndex=SwitchToCardIndex(cbCurrentCard);//获取索引rn for (BYTE i=0;i=cbExcursion[i])&&((cbValueIndex-cbExcursion[i])=cbExcursion[i])&&((cbValueIndex-cbExcursion[i])<=6))rn [color=#FF0000]if语句中判断的是什么?[/color]rnrn这两个地方搞不大清楚,还请各位指点一下!
麻将听牌,胡牌算法
最近在研究<em>麻将</em>的算法,自己手写了一份记录一下以后查阅 只实现了听牌,翻数计算还没有做处理,后期在写 <em>麻将</em>万1-9 条11-19 筒21-29 核心:枚举出对子,然后找出刻子,找出顺子 直接上代码: public static void main(String[] args) { List&amp;lt;Integer&amp;gt; list = new ArrayList&amp;lt;...
自助麻将推牌游戏(麻将连连看)
类似连连看的<em>麻将</em>推牌游戏,郑州地区很流行。 游戏不用安装,xcopy即可。
麻将癞子胡牌听牌算法
详细介绍参见:http://blog.csdn.net/skillart/article/details/40422885
麻将算法(六)胡牌之判断“连牌”和"同牌"
先定义一个连牌的结构,设置结构为组合的类型,中心牌型,牌索引,方便日后进行判断 public enum cbWeaveKind { TONGPAI, //同牌 LIANPAI, //连牌 } public structtagKindItem { cbWe
麻将算法(五)胡牌之M选N
讨论胡牌之前先假设有一幅可以胡牌的牌 一万、一万、二万、二万、二万、三万、三万、三万、四万、四万、四万、七条、八条、九条; 判断这一副牌是胡牌不难,但是想判断可以胡的方式就要用到一种排列组合算法——“M选N”: 把手牌以“同牌”和“连牌”的形式保存到list里,找出一共可以存放的若干种方式,最终选择出来的方式的数量和牌值一 定等于原来手中牌的数量和手中牌的牌值,从M种方式中选择N种
麻将胡牌算法(源代码)
自己做的一个简单的C源代码<em>麻将</em>胡牌算法 分享给大家学习.
简单的麻将胡牌算法
实现了简单的<em>麻将</em>算法,喜欢的拿去玩玩,欢迎讨论发现漏洞
麻将听牌算法
<em>麻将</em>用int表示rn给定13张牌,也就是一个int数组rn算出所有可以听的牌。
麻将胡牌递归算法(lua)
<em>麻将</em>胡牌算法 运用递归思路,先找出两张一样的牌作将牌,然后在剩下的牌中找顺子和三个一样的牌,当剩余的牌数为0,则排定可以胡牌。目前只是四川<em>麻将</em>的赢牌番型,除去风牌的。可自行进行扩展。(万:11-19,筒:21-29,条31-39),直接可以下载使用。 mjwintable类: --赢牌倍率 gMJWinRate = { 1, 2, 4, 4, 4, 4, 8, 8, 8, 16, 16,...
C++麻将胡牌算法
时间复杂弃为 O(n) 可谓原地工作的 C++ <em>麻将</em>胡牌 算法
四川麻将胡牌算法
通过递归的算法实现四川<em>麻将</em>的胡牌算法,这里讲所有的牌进行排序,并调用递归的算法,判定这十四张牌是否能胡,能够成功运行。
麻将听牌分析的疑问
[code=C/C++]rn//听牌分析rnBYTE CGameLogic::AnalyseTingCard(BYTE cbCardIndex[MAX_INDEX], tagWeaveItem WeaveItem[], BYTE cbItemCount, DWORD dwChiHuRight)rnrn //变量定义rn tagChiHuResult ChiHuResult;//胡牌结果定义rn ZeroMemory(&ChiHuResult,sizeof(ChiHuResult));//结构清零rnrn //构造<em>麻将</em>rn BYTE cbCardIndexTemp[MAX_INDEX];rn CopyMemory(cbCardIndexTemp,cbCardIndex,sizeof(cbCardIndexTemp));//拷贝cbCardIndex[MAX_INDEX]rnrn //听牌分析rn for (BYTE i=0;i
普通麻将胡牌算法
package com.lpg.test; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class MaJiangHu { public static void main(String[] args) { int[] data = new int[] { ...
关于麻将听牌的算法
假设有:rn二万,三万,四万,五万,六万,七万,八万rnrn如果听牌的话有下列:rn1,(二万,三万,四万)+(五万,六万,七万)+八万--听八万rnrn2,(二万,三万,四万)+(六万,七万,八万)+五万--听五万rnrn3,(三万,四万,五万)+(六万,七万,八万) +二万--听二万rnrn就要判断出上面的三组听牌可能,上面的牌都有一个对应值,分别是(2,3,4,5,6,7,8)rnrn你能谈谈你的思路吗?????
麻将资源牌面筛子
<em>麻将</em>资源<em>麻将</em>资源牌面筛子设置音乐配置桌面各种资源
成都麻将胡牌规则
说起<em>麻将</em>,那可是川渝市民的最爱,无论亲朋好友聚会,还是业务谈判,总是少不了<em>麻将</em>的声音。 成都<em>麻将</em>只能包括3种类型:条,筒,万。没有“门、东南西北、红中”。 每种牌都是数字从1到9,每个数字有4张,共36张。筒,万,条均一样。 胡牌简化规则如下:1.必须有一个对子,即两张相同的牌,比如:两个2筒,两个4条等。 2.剩余的牌,每3张需要凑成一个有效牌,比如:3个一样的牌(3个2筒),或者3个顺子
麻将无赖子胡牌算法
#include &amp;lt;stdlib.h&amp;gt; typedef unsigned char uchar; typedef unsigned short ushort; #define MAX_COUNT 14 #define WIK_NULL  0 #define WIK_CHI_HU 0x40 uchar AnalyseDeletePair(const uchar cbCardData[...
麻将胡牌万能公式
基本胡牌类型: M*AAA + N*ABC + CC
麻将算法之 ------ 胡牌算法
<em>麻将</em>数据牌集合 private int[] cardDataArray = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, //万子 1 2 3 4 5 6 7 8 9 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, //...
麻将癞子胡牌算法
<em>麻将</em>癞子胡牌算法,效率超快。4个5个癞子都测试过,python语言写的。
请教:麻将听牌处理
听牌规则是:[color=#FF0000]听一张时才能报听[/color]。rnrn但我的实现有的情况不报听,比如:rnrn手上牌是:[color=#008000]三万五万三索五索六索四筒四筒[/color],然后我摸了一张四万,这时打六索可听四索,但结果没有提示听牌。rnrn再如:rnrn手上牌是:二万四万五万五万六万七万二筒三筒四筒七筒七筒八筒,我碰了七筒后摸来一张八筒,手上的牌成了:rnrn[color=#008000]二万四万五万五万六万七万二筒三筒四筒八筒八筒[/color],这时打五万可听三万,但也没有提示听牌。rnrn我的代码是这样的:rnrn[code=C/C++]rn//听牌分析rnBYTE CGameLogic::AnalyseTingCard(BYTE cbCardIndex[MAX_INDEX], tagWeaveItem WeaveItem[], BYTE cbItemCount, DWORD dwChiHuRight)rnrn //变量定义rn BYTE CanTingCount=0;rn tagChiHuResult ChiHuResult;//胡牌结果定义rn ZeroMemory(&ChiHuResult,sizeof(ChiHuResult));//结构清零rnrn //构造<em>麻将</em>rn BYTE cbCardIndexTemp[MAX_INDEX];rn CopyMemory(cbCardIndexTemp,cbCardIndex,sizeof(cbCardIndexTemp));//拷贝cbCardIndex[MAX_INDEX]rnrn //听牌分析rn for (BYTE i=0;i
麻将游戏的听牌算法
测试测试!!~~~~这两周都是在测试各种BUG,没事情的时候自己在网上学学新知识,也为下个月的游戏改版预热。最近呢我也开始了我的shader之旅,估计也是这充满神秘和艰辛的旅途吧,哈哈哈!           今天写的这篇文章是为下次项目添加的一个功能,也就是<em>麻将</em>的听牌功能。不打<em>麻将</em>的童靴一定不知道什么叫听牌,可是我打<em>麻将</em>最初也不知道什么是听牌,霍霍,好丢人啊,估计是以前有东南西北中发白的时候这
麻将算法(四)吃牌
吃牌分为三种: 左吃:  左吃牌牌值一定是大于0小于6的 中吃:  中吃牌牌值一定是大于1小于7的 右吃:  右吃牌牌值一定是大于2小于8的 因此,如果传进来的是牌值,需要将其转化为索引,是索引的话就直接进行对9取余的操作,进入筛选,如果是左吃的话,传进来的牌一定不等于这个连牌中的第一个值,同理,中吃和右吃不等于第二 和的三个位置,切这三个位置中的数量一定不为零。执行以上操作。就
麻将胡牌算法——C#
这里只介绍普通的<em>麻将</em>胡牌算法,也就是7个对子或者 1个对子+3*N; N = 三个顺子或者三个一样的 ,其中字牌(东南西北中发白)不能算顺子。 首先对于每张牌 它有牌的的数字 1-9,牌的种类 (万条筒以及字) 所以先封装一个牌的包装类。如果要和服务器交互的话就应该给这个类序列化 即加上System.Serializable,然后再转Json格式,这里只做胡牌的基本判断。 public ...
选牌程序源代码
选牌程序源代码,能下就下,不能下就算了,只是为了积分来的、
Unity3D 滑动选牌
using UnityEngine; using System.Collections.Generic; public class Test : MonoBehaviour { float cardWidth = 152; float cardHeight = 212; private Vector2 touchFirst = Vector2.zero; //手指开始按下...
麻将胡牌的问题?我正在写麻将游戏
1、和牌的判断,及和牌否,和什么牌,怎么和法;有三种抽象的和牌法rn三三三三二,二二二二二二二,二一一一一一一一一一一一一;而和什么rn牌,怎么和法则尚未找到较好的算法(当然,后两种和牌法还是较好判断rn的,及七对和十三幺).rn2、人工智能的实现方法,及一个比较好的电脑对手的实现(有水平的rn选择则更好),大部分尚无头绪(但一次性随机法更容易提升电脑非正常rn水平,及作弊,而完全随机法则将在一定的范围内限制电脑作弊).
麻将 听牌胡牌算法怎么写
最普通的就行rnrn就是14张牌 由刻子(AAA)或顺子(ABC)组成4对 在加一对的牌rnrn主要是听牌不太会写 胡牌的代码有的话就更好了
如何判断麻将中的14张牌是否能听牌
如果再加入1个牌就达成了"胡牌"的满足条件,那么玩家手里的这副牌就处于"听牌"状态。
c++麻将胡牌算法,癞子胡牌算法
<em>麻将</em>,癞子 胡牌 算法,基于c++代码实现,回溯算法
麻将432牌型听牌判断流程图
<em>麻将</em>432牌型听牌判断流程图
erlang实现麻将胡牌以及癞子胡牌算法
判断胡牌 <em>麻将</em>胡牌其实是按照nAAA + mABC + DD的套路,算法判断也很好实现,找出DD,然后剩下的牌都能形成AAA或者ABC即可胡牌。本文只介绍<em>麻将</em>普通胡牌的算法,该算法经过验证可判断除特殊牌型外(十三幺,七对等)的所有胡牌牌型。 判断癞子胡牌 癞子胡牌的实现也是基于该胡牌算法,通过去掉癞子的牌型分析和癞子数得到癞子组合,根据癞子数和牌型形成癞子组合,把组合与原牌型合并再判断胡牌即...
求助 关于麻将14张牌的胡牌计算
各位高手 我最近在做一个<em>麻将</em>的题 后面遇到关于14张牌的算法不是很清楚rn看了几个例子 感觉有些不大懂 请问你们这个算法该怎么计算 rn有的说先把将挑出来 但是如果遇到像1 2 2 3 4 这种清楚 把2个2或者2个3挑出来这个例子就不成立了 还有比如出现1 2 2 2 2 3这种清楚 怎么划分rn希望各位高手能给我说下算法 感激不尽 有代码更好^o^
麻将算法(三)碰牌以及杠牌
洗牌,接牌都有了,那就再来个扔牌。扔牌的思路:如果传入的时牌索引直接找到手牌中的这个位置,将个数-1;如果传入的是牌值,通过牌型转换后再进行以上操作:     public static void RemoveCard(int[] cbCardIndex, int cbRemoveCardindex)         {             if (cbCardIndex[cbRemov
带赖子的麻将胡牌及其听牌算法研究
    癞子<em>麻将</em>胡牌以及听牌算法实现:http://blog.csdn.net/skillart/article/details/40422885     癞子<em>麻将</em>胡牌算法实现:http://www.bkjia.com/Androidjc/900214.html   <em>麻将</em>胡牌算法研究:http://blog.sina.com.cn/s/blog_7213e0310101dq3w.ht...
麻将算法(二)牌型转换以及接牌
public static int[] Cards =                 {                     0x01,  0x02,  0x03,  0x04,  0x05,  0x06,  0x07,  0x08,  0x09,//万                     0x01,  0x02,  0x03,  0x04,  0x05,  0x06,  0x07
长沙麻将APP(吃牌碰牌杠)
碰牌 每个玩家每打出一张牌,例1万,则根据每家牌判断那家是否有一对或者 3张1万给予该玩家碰或者杠的选择。若没有玩家手牌有一对或者3张,亦或者该玩家选择过,则根据玩家坐的位子来判断是否能吃牌(即东吃北,南吃东,西吃南,北吃西), ...
C++实现麻将基本听牌胡牌的算法
c++实现<em>麻将</em>的基本胡牌与听牌算法,包括小七对和十三幺牌型。
包含癞子的麻将胡牌算法
记录一下<em>麻将</em>的通用胡牌算法实现,只要满足M x ABC + N x DDD + EE 即可胡牌。 在这里先分析一下最简单的胡牌思路:先找出所有可能的将牌,若除去两张将牌之外的所有牌都能成扑,则可胡牌。 将牌就是公式里唯一的对子EE、扑的意思是一套牌顺子ABC或者刻子DDD。 将牌的查找:遍历每张手牌,若有两张以上相同牌就能作将,或者用一张癞子凑也可。 接下来就只要判断一副牌是否成扑,伪...
麻将胡牌算法(查表法 和 拆解法)
/* 1.查表法计算<em>麻将</em>胡牌(原理:http://hp.vector.co.jp/authors/VA046927/mjscore/mjalgorism.html) 2.跟拆解法对比进行效率比较 */ package main import ( &quot;fmt&quot; &quot;time&quot; &quot;sort&quot; &quot;os&quot; &quot;encoding/json&quot; &quot;log&quot; &quot;runtim
[算法] 麻将序数牌组合方案
// 环境: centos7.2, g++ v4.8.5 #include #include #include #include #include #include using namespace std; enum CombineType { CombineType_Null = 0, // 单牌 CombineType_Dui = 1, // 对子 CombineTyp
麻将胡牌判定的判定算法
<em>麻将</em>胡牌判定的判定算法 问题背景 : 简化了<em>麻将</em>规则,给定[1s-9s],[1b-9b],[1t-9t]一共27种牌,每种牌都有4张。需要判断给定的牌是不是胡牌。 胡牌的定义为: 14张牌里面由一个对子,四个坎组成。其中对子代表两张一样的牌,坎代表三张一样的牌,或者三张连续的牌(连续指: 1s,2s,3s | 4t,5t,6t) 举例: 1s,1s,2t,3t,4
麻将胡牌算法 不支持癞子
#include "stdafx.h" #include #include #define LAIZI 0 using byte = unsigned char; static byte pai[3][10]= { {12,3,1,1,1,1,1,1,0,3}, {0}, {3,1,1,1} }; bool checkNoJiang(byte arr[]) { //如果牌的数量是
LUA实现麻将胡牌判定
用LUA实现<em>麻将</em>胡牌的一个思路
游金麻将胡牌与算番
 20170426添加: 基本规则: 龙岩新庄<em>麻将</em>是流行于福建地区的<em>麻将</em>玩法,只能碰和杠,不能吃牌,也不能吃胡。 每局游戏会开出一张金牌,金牌可以当任何牌使用。 分为半自摸和全自摸两种模式,半自摸系统默认游金5倍,全自摸只能游金4倍。 游戏规则: 一、定庄 第一局游戏开始,系统随机选定一玩家坐庄。庄家和牌或流局,下一局可以连庄,否则由庄家的下家坐庄。第一局为东风东局,如果下庄第二
Unity简单麻将胡牌算法
只考虑最简单的胡牌 一对将(对子)+4个坎(四个连顺子  123 456  或四个一样的111 222 或者两者之间的组合) // 将<em>麻将</em>抽象为数字 //数字 //{01 ~ 09} 表示 {1 ~ 9} 筒 //数字 {11 ~ 19} 表示 {1 ~ 9} 条 //数字 {21 ~ 29} 表示 {1 ~ 9} 万 //数字 {31 3...
麻将听牌游戏源码及说明
主要针对同一色牌的听牌、如何出牌、来什么牌又该出什么牌、以及对吃、碰、杠处理等算法作出分析
麻将游戏的听牌规则工具类
一个<em>麻将</em>游戏的听牌规则,只有少量的方法,调用可返回需要打出的牌和胡牌类型
vc++实现的四川麻将胡牌算法
简易的实现的四川<em>麻将</em>的胡牌算法,用递归方式实现的,希望有用的到的朋友,可以互相探讨学习下.
c++ 麻将序列转换为16进制牌
//<em>麻将</em>转换 BYTE CGameLogic::SwitchToCardData(BYTE cbCardIndex) { ASSERT(cbCardIndex return ((cbCardIndex/9) }
麻将胡牌算法的Java实现
最近一个棋牌游戏项目中涉及对<em>麻将</em>胡牌的判定,网上搜了搜虽然看到一些算法,但是感觉都不尽如人意,一般<em>麻将</em>的胡牌为1对和4组三张牌的连牌,所以在网上搜到的算法往往都死死的为了这个目的来实现,而且多数没有考虑到对百塔牌的支持,下面贴上代码: /* * To change this license header, choose License Headers in Project Propertie
请教麻将的牌型分析算法
只考虑最基本的<em>麻将</em>胡牌方式,即3+3+3+3+2。rnrn以下面的一手牌为例,rnrn4万 4万 5万 6万 7万 8万 5筒 6筒 6筒 7筒 4条 4条 南风 中 (共14张)rnrn综合已有资料得到一个大概的思路是,rnrn将这手牌划分为已经格好的3张组合(set)和2张组合(距离一个set只差一张),rn比如一个set:4万 5万 6万 或者4万 4万 4万。rnrn距离一个set只差一张的2张组合: 5筒 6筒 或者 4条 4条。rnrnrn现在的问题是,怎么求得该手牌距离成胡(3+3+3+3+2)需要的最少张数。rnrn对于每种可能的牌型划分,都会从牌墙剩下的牌里取任意一张(34张牌里还没有打完的牌),同时从手中的牌中扔掉任意一张,直到所有的2张组合都被消掉只剩下单张牌或者已不可能成为set的2张组合(可以从此得到该牌型下所需的成胡张数)。rnrn在此过程中,得到一个成胡所需的最小张数。rnrn请教各位,有什么好的思路完成这个搜索过程吗(高效一点或者容易实现)?有点类似迷宫问题但约束条件又比较复杂。rn
求一麻将胡牌算法
求判断一手<em>麻将</em>是否胡牌的算法,<em>麻将</em>牌中带有百搭(百搭可替代任意牌,一手牌中最多可能有8个百搭) 。rnrn求个思路。
LUA源代码麻将胡牌算法
<em>麻将</em>胡牌算法,LUA代码实现,可以加入你的项目直接使用!
求助:麻将胡牌判断算法
RT....rn赖子<em>麻将</em>(也就是其中有种牌是可以当任何张牌用的),14张<em>麻将</em>牌判断是否可以胡牌的算法.rn想了很久都没办法解决赖子可以随便当牌的问题..因为可能同时存在四张赖子的情况..完全没有任何头绪..请大家帮忙想一下有什么好的解决方法..先谢谢了...
麻将清一色胡牌算法(C版)
14张<em>麻将</em>的清一色胡牌算法,VC编译和测试通过......
麻将胡牌算法的判定函数
非常精辟的胡牌判定方法,同一牌型如果能拆成多种胡牌方式,取番值大的,比如22333444555999,会拆成22,333,444,555,999,而不是234,234,345,55,999
一种麻将胡牌算法的C源程序
一种<em>麻将</em>胡牌算法。通过一个二维数组定义<em>麻将</em>的数据结构,并在此基础上设计了一种判断<em>麻将</em>是否胡牌的算法,该算法主要步骤的时间复杂度为O (n ),且基本上处于“原地工作”。在经过算法判断运算后,该二维数组最终会恢复到最初的数据。
求教一个麻将胡牌的算法
有:二、三、四、五、六万加上一对八万。rn我们知道至少可以胡一,四,七万这三张牌。rnrn但我用程序只做到了判断四、七万是可胡的牌,(先把二、三、四万作为已经组成好了的牌)。rnrn现在如何让程序知道一万也可以胡?
华为机试---判断麻将能否胡牌
题目具体题目没有记下来,大概是说<em>麻将</em>胡牌的规则,然后输入‘1’-‘9’的数字组成的字符串,字符串长度小于15.能胡牌打印‘yes’不能胡牌打印‘no’.胡牌的规则大概是一个对子可以,如 ‘11’、‘22’之类;对子和三个重复的可以,如‘11222333’;对子和串子可以胡牌,如‘11234678’,就判断输入的字符串是否满足这三种情况之一。代码感觉华为的机试都需要动动脑筋想一些方法,注重算法和思变...
棋牌麻将 - 无癞子胡牌算法
基础知识本文涉及的所有名词均在博文中有说明: http://blog.csdn.net/kunyus/article/details/78644517核心处理流程 去除杂念: 由于字牌中只只允许出现 对子 和 刻子, 所以单独处理字牌. 返璞归真: 万/筒/条牌等 序数牌 处理除了花色不同其他规则一致, 所以忽略 序数牌 花色进行处理. 分而治之: 序数牌中存在关系的牌必须是连续的, 不连续的牌之间
麻将算法(七)胡牌之对子判断
判断一手牌中的牌是否可以胡牌,思路是选出将手牌中的对子,将手牌中的对子牌“去掉”后(将这个牌添加到一个叫DUIZI的list里),将去掉对子的手牌进行连牌与同牌判断,将“连牌与同牌”的list进行M选N操作,如果选出的种类不等于0那么可以判定出是普通胡牌,对于自摸与非自摸的区分在于传入的是在“接牌”后形成的胡牌,还是其他玩家“出完”牌后形成的胡牌。 static List Reco
斗地主滑动选牌算法
斗地主滑动选牌
一道坑爹的选牌题目
选牌 题目描述: 一天,小A和小B在箱子找玩具。 他们在箱子的深处发现了一些扑克牌,他们把扑克牌都拿了出来数了数,发现已经凑不成一副扑克了。 A,2,4,5,6,7,8,9分别有3,3,3,2,1,3,3,2张,其他的都一张都没有。 他们决定拿这些扑克做一个游戏: 他们两人轮流(从小A开始)从这些扑克中拿一张出来,然后计算所有拿出来的扑克上数的和(A当做1来计算)。 让一人拿完计算的
Go-麻将算法封装包括牌墙算法听牌算法胡牌算法出牌推荐算法
<em>麻将</em>算法封装,包括牌墙算法、听牌算法、胡牌算法、出牌推荐算法
【算法】麻将听牌算法,借助StreamAPI,使用线程池完成寻找听牌,判断胡牌
效果 判断胡牌 寻找听牌 多牌型的寻找胡牌 这次的听牌算法采用了Java8的StreamAPI新特性进行处理牌组集合,比传统的集合遍历性能上提高了不少,而且还支持并行,这为多线程提供了很好的支持,而且牌组的编码采用了集合工厂,底层省去了修改的功能,创建后不能修改只能遍历,而且赋值时还很方便 项目源码,jar文件,请前往github获取,https://github.com...
第五场积分赛—E - 选牌
小K手中有n张牌,每张牌上有一个一位数的数,这个字数不是0就是5。小K从这些牌在抽出任意张(不能抽0张),排成一行这样就组成了一个数。使得这个数尽可能大,而且可以被90整除。 注意: 1.这个数没有前导0, 2.小K不需要使用所有的牌。 Input 每个测试数据输入共2行。 第一行给出一个n,表示n张牌。(1&amp;lt;=n&amp;lt;=1000) 第二行给出n个整数a[Math Pro...
麻将
20170226添加: //胡牌定义 /* 胡牌类型CHK_宏(有且只有11种:抢金、三金倒、单游、双游、三游、自摸、抢杠、七对自摸、七对单游、七对双游、七对三游) 牌型闲/庄番数={4/8,3/6,5/10,10/20,20/40,1/2,4/6,3/6,6/12,12/24,24/48} 以上11种胡牌类型不能再组合了,除此之外,杠(暗杠、回头杠、点杠、花杠)也要参与输赢算番 */
cocos creator 斗地主 选牌效果
cocos creator 斗地主 选牌效果 用cocos的cc.Node.EventType实现的效果
用C++做麻将游戏,怎么实现牌型分析?
同题目
lua 实现四川麻将胡牌算法(附源代码讲解)
房卡棋牌游戏正如火如荼的遍地开花,迫使我也加入开发中的一员,最近完成了一套<em>麻将</em>棋牌游戏!今天给大家分享一下其中的算法部分!转载请说明出处,有更好的算法可以加扫描微信交流!                                                                                                 LUA源代码下载 一
COCOS LUA 四川麻将胡牌算法讲解 附带源代码
房卡棋牌游戏正如火如荼的遍地开花,迫使我也加入开发中的一员,最近完成了一套<em>麻将</em>棋牌游戏!今天给大家分享一下其中的算法部分!更多房卡棋牌游戏技术,会陆续分享!!!转载请说明出处!rn博客链接地址:[url=http://blog.csdn.net/weixin_41082095/article/details/79258241]http://blog.csdn.net/weixin_41082095/article/details/79258241[/url]rnrn[url=http://download.csdn.net/download/weixin_41082095/10240261]LUA源代码下载[/url]rnrn一副<em>麻将</em>是否能胡牌就必须满足以下公式(特殊牌型出外,7对,龙七对)rn[b]N*AAA+N*ABC+1*AA[/b]rn[b][color=#FF0000]看懂了吗?如果一副牌由N个刻子,N个连牌,有且只有一对将牌组成!那么我们就可以认为这副牌胡了!rn如果还没有搞懂没关系,下面我们依次讲解什么意思![/color][/b]rnAAA ABC AArnAAA:刻子 3张花色一样,点数一样的牌,俗称一砍牌rnABC:连牌 3张花色一样,点数彼此相差一点 如:123 345 678 俗称一搭牌rnAA:对子 2张花色一样,点数一样的牌,俗称<em>麻将</em>rnrnrn可以回忆一下我们平时打<em>麻将</em>胡牌之后牌型是否都满足这样的公式。rn现在我们知道了胡牌的公式,那么在程序语言中我们是怎么来计算的呢????rn工欲善其事,必先利其器!!!首先我们来定义一个<em>麻将</em>的数据结构rn我们知道一副<em>麻将</em>里面有3种花色(万,筒,条),9个点数(1----9),我们就可以定义一个三维数组来存储我们手牌rnrnLocal handCard=rnrn0,0,0,0,0,0,0,0,0, --表示万rn0,0,0,0,0,0,0,0,0, --表示筒rn0,0,0,0,0,0,0,0,0 --表示条rnrn如图:rn[img=https://img-bbs.csdn.net/upload/201802/07/1517989763_564928.png][/img]rn这副牌在数组里面就可以这样来定义rnLocal handCard=rnrn1,2,1,0,1,0,2,0,0, --表示万rn0,0,1,1,1,0,2,0,1, --表示筒rn0,0,0,0,0,0,0,0,0 --表示条rnrn看懂了嚒,每一个值代表每一张牌出现了几次,我们还可以在handCard里面再多定义一个数组用来表示每一张牌的属性,方便我们后面来计算连牌rn[code=text] handCard[4]=rn for i=1,3 dorn for j=1,9 dorn for h=1,card[i][j] dorn local cardData =rn cardData.color = irn cardData.point = jrn card[4][#card[4]+1]= cardDatarn endrn endrn end[/code]rnrn这样我们手牌牌如何用数据来表示就完成了,接下来我们就可以开始拆牌了。定义几个数组分别用来储存 同一张牌出现了4次的牌,3次的牌,2次的牌。rn[code=text] local cardData=rn self.twoCardAry=rn self.threeCardAry=rn self.fourCardAry=rn self.cloneCardList = rnrn for i=1, 3 dorn for j=1,9 dorn cardData=rn if tempCardList[i][j] == 2 thenrn cardData.color = irn cardData.point = jrn self.twoCardAry[#self.twoCardAry+1] = cardDatarn elseif tempCardList[i][j] == 3 thenrn cardData.color = irn cardData.point = jrn self.threeCardAry[#self.threeCardAry+1] = cardDatarn elseif tempCardList[i][j] == 4 thenrn cardData.color = irn cardData.point = jrn self.fourCardAry[#self.fourCardAry+1] = cardDatarn end rn endrn endrn rn最后依次把每张牌能组成的牌型都遍历一次,看最后能否满足我们之前定义的胡牌公式。rn---是否能胡牌 参数 1牌的列表 2 打的那张牌 3自己缺的花色rnfunction Algorithm:PlayerIs_Hu(cardList,nSendCardValue,nQueSe)rn rn local tempCardList = rn tempCardList[4]=rn for i=1,3 dorn tempCardList[i]=rn for j=1,9 dorn tempCardList[i][j] = cardList[i][j]rn endrn endrn tempCardList[nSendCardValue.color][nSendCardValue.point] = tempCardList[nSendCardValue.color][nSendCardValue.point] + 1rn self:SortPlayerCards(tempCardList)rn rn --判断自己缺的花色打完没有rn for i=1,9 dorn if tempCardList[nQueSe][i]>0 then return false endrn endrn rn local cardData=rn self.twoCardAry=rn self.threeCardAry=rn self.fourCardAry=rn self.cloneCardList = rnrn for i=1, 3 dorn for j=1,9 dorn cardData=rn if tempCardList[i][j] == 2 thenrn cardData.color = irn cardData.point = jrn self.twoCardAry[#self.twoCardAry+1] = cardDatarn elseif tempCardList[i][j] == 3 thenrn cardData.color = irn cardData.point = jrn self.threeCardAry[#self.threeCardAry+1] = cardDatarn elseif tempCardList[i][j] == 4 thenrn cardData.color = irn cardData.point = jrn self.fourCardAry[#self.fourCardAry+1] = cardDatarn end rn endrn endrn rn if #self.twoCardAry == 7 then return true end --7对rn if #self.twoCardAry == 5 and #self.fourCardAry ==1 then return true end --龙七对rnrn local tempFour = 0rn local tempThree = 0rn local tempTwo = 0rnrn if next(self.twoCardAry)~=nil then tempTwo = #self.twoCardAry endrn if next(self.threeCardAry)~=nil then tempThree = #self.threeCardAry endrn if next(self.fourCardAry)~=nil then tempFour = #self.fourCardAry endrnrn rn --要胡牌 必须满足 AAA ABC AA 必须要有一对将牌rn local isHuCard = falsern for i=0,tempFour dorn for j=0,tempThree dorn for k=0,tempTwo dorn self.cloneCardList =rn rn for g=1,#tempCardList[4] dorn self.cloneCardList[g] = tempCardList[4][g] rn endrn rn isHuCard = self:CalcIsHuCard(i,j,k)rn if isHuCard == true then return true endrn endrn end rn endrn rn return falsernendrnrnrn function Algorithm:CalcIsHuCard(nFourIndex,nThreeIndex,nTwoIndex)rnrn local FourCardData = nilrn local ThreeCardData = nilrn local TwoCardData = nilrnrn if nFourIndex>0 then FourCardData = self.fourCardAry[nFourIndex] endrn if nThreeIndex>0 then ThreeCardData = self.threeCardAry[nThreeIndex] endrn if nTwoIndex>0 then TwoCardData = self.twoCardAry[nTwoIndex] endrnrn self:DelCardOfCardList(self.cloneCardList,FourCardData,4)rn self:DelCardOfCardList(self.cloneCardList,ThreeCardData,3)rn self:DelCardOfCardList(self.cloneCardList,TwoCardData,2)rnrn --剔除所有的连牌rn local nCntIndex = #self.cloneCardListrn rn local i=1rn local j=1rn local h=1rn while i0 then --如果有一对 剩余的牌必须为0 才能胡牌rn if nCntIndex == 0 thenrn return truern endrn else ---如果没有一对 最后必须没有单牌 和有且只有一对rn local twoAry=rn local OneAry=rn local cardAry=rn for i=1,3 dorn cardAry[i]=rn for j=1,9 dorn cardAry[i][j]=0rn endrn endrn rn for i=1,nCntIndex dorn local data = self.cloneCardList[i]rn cardAry[data.color][data.point] = cardAry[data.color][data.point] + 1 rn endrn rn rn local nIndex = 1rn for i=1,3 dorn for j=1,9 dorn if cardAry[i][j]==1 thenrn return falsern elseif cardAry[i][j]==2 thenrn nIndex = nIndex +1rn if nIndex == 3 thenrn return falsern endrn endrn endrn endrnrnrn return truernrn endrn rnrn return falsern end[/code]
基于概率与胡牌表的麻将AI算法
github项目链接:https://github.com/yuanfengyun/mj_ai<em>麻将</em>概率问题:1、已经四个玩家每人有13张手牌2、桌上已经打出的牌3、玩家A有1个确定的胡牌目标问: 玩家A摸入5张牌胡牌的概率?公式见图:概率计算公式.jpg整体思路1、当我手上有14张牌时,如果能胡,直接胡掉。   如果不能胡,我需要知道打出哪张牌以后,我胡牌的概率大2、分别计算打出每张牌以后的胡牌概...
麻将胡牌算法思路(任意赖子)
看网上算法穷举,枚举,剔除特殊情况等等很乱,感觉还是写一套通用的逻辑比较好。 这个算法前后修改了几次,最终在三星s4这种老的安卓机上计算一次时间在0.04s左右。 总体思路:首先需要一对将牌,剩下的牌任意组合,都组成顺子或者坎牌就可以胡牌了。 发完牌,手牌13张,要胡牌的话是14张,我们插入一张赖子牌。 每张牌都可能做为将牌,就算只有一张,还有一张赖子牌可以组成将牌,我们先遍历<em>麻将</em>牌列表,...
SVN安装配置及使用方法下载
SVN安装配置及使用方法,适合初学者,是入门非常好的参考资料 相关下载链接:[url=//download.csdn.net/download/xiewanzhi1987/2114518?utm_source=bbsseo]//download.csdn.net/download/xiewanzhi1987/2114518?utm_source=bbsseo[/url]
squid是一款优秀的代理服务器软件下载
squid是一款优秀的open source的代理服务器软件 相关下载链接:[url=//download.csdn.net/download/caidepeng/3642739?utm_source=bbsseo]//download.csdn.net/download/caidepeng/3642739?utm_source=bbsseo[/url]
磊科256固件下载
1、 优化部分功能 2、 修正某些情况下花生壳无法连接的情况 3、 增强抗攻击性能 4、 优化QOS 5、 增强VPN性能和兼容性 6、 新增分级用户功能 7、 新增一些UI以更便于管理 8、 允许用户自定义WAN口(2~4个) 9、 更新上网行为特征库 10、修复一些其他已知的BUG 相关下载链接:[url=//download.csdn.net/download/wzl2004/6480941?utm_source=bbsseo]//download.csdn.net/download/wzl2004/6480941?utm_source=bbsseo[/url]
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制
我们是很有底线的