關(guān)于麻將胡牌java代碼的信息

誰(shuí)用java做過(guò)麻將

簡(jiǎn)單的說(shuō)一下,頁(yè)面這個(gè)沒(méi)問(wèn)題。swing。

成都創(chuàng)新互聯(lián)專(zhuān)注于田家庵企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城開(kāi)發(fā)。田家庵網(wǎng)站建設(shè)公司,為田家庵等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

就是業(yè)務(wù)邏輯方面的,

業(yè)務(wù)邏輯我感覺(jué)一步一步的來(lái),也不會(huì)太難。

首先,分牌,這個(gè)設(shè)個(gè)list鏈表,里面包含麻將所有的對(duì)象,隨機(jī)分配。

第二出牌,一人一張,設(shè)個(gè)標(biāo)記位,4個(gè)線程,一個(gè)出牌之后改標(biāo)記位讓下一個(gè)線程運(yùn)行。

第三判斷,手下判斷是否胡了,然后再判斷是否杠上,然后判斷。。。。。

當(dāng)然,實(shí)際做的過(guò)程中會(huì)很多未知的問(wèn)題,慢慢做吧。

其實(shí)解決這些未知的問(wèn)題才是收獲最大的地方。

計(jì)算麻將的番數(shù)(C++/Java)

import java.util.Scanner;

public class Main {

/**

* @param args

*/

public static void main(String[] args) {

String string=null;

Scanner cin = new Scanner(System.in);

while (cin.hasNext()){

string=cin.next();

}

String str[]=string.split(",");

int i=0;

int count=0;

if(str.length==7){

count=count+2;

}

else{

for(i=0;istr.length;i++){

if(str[i].length()==6str[i].charAt(0)=='1'str[i].charAt(2)=='2'

str[i].charAt(4)=='3'str[i].charAt(1)=='T'

str[i].charAt(3)=='T'str[i].charAt(5)=='T'){

count=count+1;

}

else if(str[i].length()==8){

count=count+2;

}

}

}

System.out.println(count);

}

}

麻將胡牌公式

1、平胡這是所有麻將胡牌牌型中胡的最多的沒(méi)有之一,牌型組成為將對(duì)、順子與刻子,在所有胡牌牌型中,正是因?yàn)槿ソM牌難度小,因此很多玩家都會(huì)選擇這種牌型胡牌。

2、碰碰胡胡牌的牌型要求手中的麻將牌全部是刻子加一個(gè)將對(duì),需要注意的一點(diǎn)是玩家可以進(jìn)行碰和杠操作,但是不允許吃牌,一旦吃牌則不能組此胡牌牌型。

3、七對(duì)這種牌型要求玩家手中的麻將牌全部是對(duì)子,并且所有的對(duì)子都在手中持有,在整個(gè)過(guò)程中不能進(jìn)行碰和杠操作。

4、清一色胡牌的時(shí)候手中所有的麻將牌由同一種花色的牌組成,同時(shí)要滿(mǎn)足基本胡牌牌型要求。

5、混一色胡牌的時(shí)候手中所有的牌只存在兩種情況,一種麻將牌同一種花色,另外一種是東南西北中發(fā)白,兩種牌混合組成的胡牌牌型。

6、大小三元胡牌的時(shí)候手中的中發(fā)白如果是三個(gè)刻子的牌型則稱(chēng)之為大三元,如果三張中有一個(gè)是將對(duì)則稱(chēng)之為小三元。

胡牌公式是什么啊?

胡牌公式詳情如下。

n*AAA+m*ABC+DD。AAA就是三個(gè)一樣的牌,ABC就是順子,DD就是對(duì)子。mn可以為0,加起來(lái)一共14張牌即為和牌,少任何一張即為聽(tīng)牌。

當(dāng)m=0且n=0時(shí),此時(shí)和牌的牌型就是7小對(duì),7個(gè)對(duì)子少一張牌,獨(dú)聽(tīng)那張單牌。當(dāng)n=0時(shí),m=4,除了1個(gè)對(duì)子外有4個(gè)順子,此時(shí)和牌的牌型屬于平和,是較為普通的牌型。

當(dāng)m=0時(shí),n=4,除了1個(gè)對(duì)子外有4個(gè)刻子,此時(shí)聽(tīng)牌一般聽(tīng)兩個(gè)對(duì)子,摸到其中一個(gè)對(duì)子的牌,湊足4個(gè)刻子,即可和牌??套涌梢允桥鰜?lái)的,也可以是摸來(lái)的,如果都是碰來(lái)的,就叫碰碰和。n和m都不為0時(shí),n+m=4,除特殊情況外,基本屬于平和的狀態(tài)。

麻將,四人骨牌博戲,流行于華人文化圈中。起源于中國(guó),粵港澳及閩南地區(qū)俗稱(chēng)麻雀。麻將是由中國(guó)古人發(fā)明的博弈游戲,娛樂(lè)用具,一般用竹子、骨頭或塑料制成小長(zhǎng)方塊,上面刻有花紋或字樣。

北方麻將每副136張牌。南方麻將一般為144張牌,添加了春,夏,秋,冬,與梅,竹,蘭,菊八張花牌。也有一些地方的麻將,另再加上聚寶盆,財(cái)神,老鼠,貓各1張牌,與百搭4張牌,總計(jì)為152張牌。

麻將胡牌的萬(wàn)能公式

麻將 ,古人發(fā)明的一種博弈游戲,一般用竹子、骨頭或塑料制成的小長(zhǎng)方塊,上面刻有花紋或字樣,麻將牌實(shí)際上是一種紙牌與骨牌的結(jié)合體,那么你知道麻將胡牌公式嗎?我就給大家解答一下,希望對(duì)大家有所幫助,歡迎閱讀!

目錄

麻將胡牌公式

麻將有哪幾種互動(dòng)形式

麻將胡牌方式

麻將胡牌公式

n×AAA(刻子)+m×ABC(順子)+DD(將牌)就可以和了,m或n可以等于0。

〈〈〈

麻將有哪幾種互動(dòng)形式

1.吃牌:只能吃上家打的牌,比如:上家打了4筒,你有能搭檔上4筒的,比如345,234,456均可以吃;

2.碰牌:你有一對(duì)發(fā)財(cái),其他人打了發(fā)財(cái),你就可以碰,碰后不抓牌,直接打掉手里的一張牌;

3.明杠:手里有三個(gè)發(fā)財(cái),其他人打來(lái)發(fā)財(cái),你就可以杠,從杠底抓一張牌,然后再出牌;

4.暗杠:手里湊齊四個(gè)發(fā)財(cái),就可以暗杠,從杠底抓一張牌,然后再出牌;

5.杠底:莊家第一次抓牌時(shí)剩余的牌,從右往左抓;

6.聽(tīng)牌:剩4張、7張、10張、13張時(shí),當(dāng)你將你手中的牌都湊成了有用的牌,只差一張牌就能胡了,此時(shí)的狀態(tài)就是聽(tīng)牌;

7.胡牌:這個(gè)是最重要的!!胡牌必須有一副對(duì)才可以。比如手里生四張牌了 3、4、5筒,還有個(gè)1萬(wàn),此時(shí)你就胡1萬(wàn);如果是一對(duì)2條,還有3、4筒,此時(shí)你胡2、5筒。如果是一對(duì)紅中、和一對(duì)發(fā)財(cái),此時(shí)胡紅中和發(fā)財(cái);如果只剩一張紅中,那么就胡紅中。

〈〈〈

麻將胡牌方式

1、大四喜由4副風(fēng)刻 ( 杠 ) 組成的和牌。不計(jì)圈風(fēng)刻、門(mén)風(fēng)刻、三風(fēng)刻、碰碰和

2、大三元和牌中,有中發(fā)白3副刻子。不計(jì)箭刻

3、綠一色由 23468 條及發(fā)字中的任何牌組成的順子、刻五、將的和牌。不計(jì)混一色。如無(wú)“發(fā)”字組成的各牌,可計(jì)清一色

4、九蓮寶燈由一種花色序數(shù)牌子按 1112345678999 組成的特定牌型,見(jiàn)同花色任何1張序數(shù)牌即成和牌。不計(jì)清一色

5、四杠4個(gè)杠

6、連七對(duì)由一種花色序數(shù)牌組成序數(shù)相連的7個(gè) 對(duì)子 的和牌。不計(jì)清一色、不求人、單釣

7、十三幺由 3 種序數(shù)牌的一、九牌, 7 種字牌及其中一對(duì)作將組成的和牌。不計(jì)五門(mén)齊、不求人、單釣64番

8、清幺九由序數(shù)牌一、九刻子組成的和牌。不計(jì)碰碰和、同刻、無(wú)字。

〈〈〈

麻將胡牌的萬(wàn)能公式相關(guān) 文章 :

★ 關(guān)于麻將胡牌的所有牌型大全(2)

★ 四川成都麻將胡牌種類(lèi)和計(jì)番規(guī)則

★ 鋼琴左手伴奏技巧

★ 高考地理萬(wàn)能公式

★ 必背萬(wàn)能政治答題公式模板

★ 小學(xué)語(yǔ)文閱讀理解答題實(shí)用萬(wàn)能公式

★ 高一必修2政治大題答題方法與萬(wàn)能公式

★ 小升初語(yǔ)文萬(wàn)能答題公式與答題技巧

★ 中考政治萬(wàn)能答題公式

★ 高中政治必備萬(wàn)能公式

var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = ""; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

怎么寫(xiě)一個(gè)c++程序判斷麻將是否胡牌(只討論清一色的情況)

以前我寫(xiě)了一個(gè)判斷麻將是否胡牌的算法,不過(guò)不支持百搭。最近有一個(gè)朋友問(wèn)我,如何有百搭,算法如何寫(xiě)。我寫(xiě)了一個(gè),貼出來(lái),讓網(wǎng)友看看。

算法輸入: 整數(shù)數(shù)組 a[0..n-1]表示一手牌,其中,n 是牌的張數(shù),比如 14。

牌的編碼可自定,比如: 101-109 表示一萬(wàn)到九萬(wàn),

201-209表示一條到九條,

301-309表示一筒到九筒,

411,421,431,441,451,461,471表示東南西北中發(fā)白,

500表示百搭。

算法預(yù)處理:

若 n 模 3不等于 2,直接輸出:牌數(shù)不對(duì),是相公,算法結(jié)束。否則:

把百搭刪除,把剩下的普通牌進(jìn)行排序:

int i,m;

m=0;

for (i=0;in;i++)

if (a[i]不是百搭) a[m++]=a[i]; // m 就是普通牌的張數(shù)

把 a 中前 m 個(gè)元素進(jìn)行排序;

隨后,我把 a 看成左、中、右三段,其中,左側(cè)段表示“成牌區(qū)”,即:它們由刻、順組成;

中段表示試探區(qū),算法要重點(diǎn)處理它們;而右側(cè)段則是“雜牌”區(qū),即:它們由非刻非順組成。

在算法預(yù)處理后,顯然,a 的左段長(zhǎng)度為0,中段長(zhǎng)度是m,右段長(zhǎng)度是0,調(diào)用下面的“理牌”算法:

LiPai(a,0,m,0,n-m);

其中,n-m是指百搭的張數(shù)。

理牌算法:

void LiPai(int a[],int LeftCount,int MidCount,int RightCount,int CountOfBaiDa)

{

if (MidCount3) // 試探區(qū)已不足 3 張,理牌過(guò)程結(jié)束,進(jìn)入“理雜牌”階段

{

調(diào)用測(cè)試算法; // 見(jiàn)后文

}

else // 試探區(qū)至少 3 張,可以試著從中取出刻子和順子

{

int * p=a[LeftCount]; // 讓 p 指向試探區(qū)首張

int x=p[0]; // 取出試探區(qū)首張

if (p[1]==x p[2]==x) // 發(fā)現(xiàn)一個(gè)刻子

{

LiPai(a,LeftCount+3,MidCount-3,RightCount,CountOfBaiDa); // 把刻子放到成牌區(qū),遞歸地調(diào)用理牌算法

}

在 p[0],p[1],...p[MidCount-1] 中尋找 x+1 和 x+2;

if (找到)

{

把 x,x+1,x+2 放入 p[0],p[1],p[2];

把剩下的牌放入 p[3],p[4],...,p[MidCount-1]中;

LiPai(a,LeftCount+3,MidCount-3,RightCount,CountOfBaiDa); // 把順子放到成牌區(qū),遞歸地調(diào)用理牌算法

對(duì)p[0],p[1],...,p[MidCount-1] 排序; // 恢復(fù)原樣

}

讓 p[0],p[1],...p[MidCount-1] 循環(huán)左移一次; // 這樣,X 就成為雜牌區(qū)左邊的元素了

LiPai(a,LeftCount,MidCount-1,RightCount+1,CountOfBaiDa); // 把x放入雜牌區(qū),遞歸地調(diào)用理牌算法

讓 p[0],p[1],...p[MidCount-1] 循環(huán)右移一次; // 這樣,X 又回到試探區(qū)最左側(cè)了

}

上述遞歸算法的終止條件是 MidCount3,當(dāng)該條件滿(mǎn)足時(shí),調(diào)用下面算法(即上文提到的測(cè)試算法)

雜牌總張數(shù)=MidCount+RightCount; // 不足 2 張的中段,實(shí)際上也是雜牌

if (CountOfBaiDa==0) // 如果沒(méi)有百搭

{

if (雜牌總張數(shù)==2 兩張雜牌相同) // 雜牌只能是一個(gè)對(duì)子,它將是麻將頭

{

輸出一個(gè)胡牌方案:刻、順是 a[0],a[1],...,a[LeftCount-1],麻將頭(對(duì)子)是 剩下的兩張雜牌;

}

}

else // 如果有百搭, 讓一張百搭配2張雜牌

{

if (雜牌總張數(shù)-2*CountOfBaiDa=2) // 配完之后,剩下的牌數(shù)若不超過(guò) 2,則有希望胡牌,需要進(jìn)一步探測(cè)

{

申請(qǐng)數(shù)組 b[];

把 a[LeftCount],a[LeftCount+1],...,a[m-1] 放入 b[0],b[1],...,b[MidCount+RightCount-1] 中;

把b[]排序;

LiZaPai(a,LeftCount,b,0,MidCount+RightCount,0,CountOfBaiDa); // 總雜牌區(qū)也被劃分成 3 段:左段 中段 右段,見(jiàn)下文

釋放b[];

}

}

“理雜牌”LiZaPai(...) 算法,與普通理牌算法類(lèi)似,不過(guò),它的目標(biāo)是理出對(duì)子或搭子。它也把待理區(qū)劃分成 3 段:

左段:成對(duì)/搭區(qū)

中段:待測(cè)區(qū)

右段:雜牌區(qū)

void LiZaPai(int a[],int OKCount,int b[],int LeftCount,int MidCount,int RightCount,int CountOfBaiDa) // OKCount 是刻子/順子的張數(shù),在 a 的最左側(cè)

{

if (MidCount2) // 待測(cè)區(qū)不足 2 張,

{

調(diào)用試配算法; // 見(jiàn)下文

}

else

{

int * p=b[LeftCount]; // 讓 p 指向試探區(qū);

int x=p[0]; // 取出首張

if (x==p[1]) // 找到一個(gè)對(duì)子

{

LiZaPai(a,OKCount,b,LeftCount+2,MidCount-2,RightCount,CountOfBaiDa); // 遞歸地求解

}

在 p[1],p[2],...p[MidCount-1] 中尋找 x+1;

if (找到)

{

把 x,x+1 放入 p[0],p[1];

把剩下的牌放入 p[2],p[3],...,p[MidCount-1];

LiZaPai(a,OKCount,b,LeftCount+2,MidCount-2,RightCount,CountOfBaiDa); // 遞歸地求解

把 p[0],p[1],...,p[MidCount-1] 排序;

}

在 p[1],p[2],...p[MidCount-1] 中尋找 x+2;

if (找到)

{

把 x,x+2 放入 p[0],p[1];

把剩下的牌放入 p[2],p[3],...,p[MidCount-1];

LiZaPai(a,OKCount,b,LeftCount+2,MidCount-2,RightCount,CountOfBaiDa); // 遞歸地求解

把 p[0],p[1],...,p[MidCount-1] 排序;

}

讓 p[0],p[1]....,p[MidCount-1] 循環(huán)左移; // x 稱(chēng)到雜牌區(qū);

LiZaPai(a,OKCount,b,LeftCount,MidCount-1,RightCount+1,CountOfBaiDa); // 遞歸地求解

讓 p[0],p[1]....,p[MidCount-1] 循環(huán)右移; // x 回到首位

}

}

試配算法如下:

雜牌總數(shù)=MidCount+RightCount; // 此時(shí),試探區(qū)成了雜牌區(qū)

if (雜牌總數(shù)==0) // 全是對(duì)子/搭子

{

for (i=0;iLeftCount;i+=2) // 尋找對(duì)子

if (b[i]==b[i+1]) // 找到一個(gè)對(duì)子, 它是麻將頭

{

if (LeftCount/2-1=CountOfBaiDa) // 剩下的對(duì)子搭子必須全部由百搭配成刻/順

{

輸出一個(gè)胡牌方案:刻/順是 a[0],a[1],...,a[OKCount-1],以及 b[0]到b[LeftCount-1] 中除去 i,i+1 兩元素后, 剩下的對(duì)/搭與百搭配成的刻/順,以及剩下的百搭組成的刻子;

麻將頭是是 b[i],b[i+1];

}

}

// 現(xiàn)在,必須用兩個(gè)百搭配成麻將頭, 所有搭子要由剩下的百搭配成刻/順

if (CountOfBaiDa=2 LeftCount/2=CountOfBaiDa-2)

{

輸出一個(gè)胡牌方案:刻/順是 a[0],a[1],...,a[OKCount-1],以及 b[0]到b[LeftCount-1] 每個(gè)對(duì)/搭與百搭配成的刻/順,以及剩下的百搭組成的刻子;

麻將頭是百搭,百搭;

}

}

else

if (雜牌總數(shù)==1) // 只有一張雜牌, 此時(shí),必須用一個(gè)百搭與此雜牌配成麻將頭

{

if (CountOfBaiDa=1 LeftCount/2=CountOfBaiDa-1) // 用一個(gè)百搭與雜牌配成對(duì)子,而對(duì)子/搭子的副數(shù)不能比剩下的百搭數(shù)多, 這樣就可以胡牌

{

輸出一個(gè)胡牌方案:刻子/順子是 a[0],a[1],...,a[OKCount-1],以及 b[0],b[1],百搭,b[2],b[3],百搭,...b[LeftCount-2],b[LeftCount-1],百搭,以及

配完對(duì)子、刻/順后剩下的百搭組成的刻子;

麻將頭是:雜牌,百搭。

}

}

else // 有2張或以上雜牌,不胡,因?yàn)?,最多只能用一個(gè)百搭+一張雜牌形成麻將頭

{

}

上面算法我用 VC++ 實(shí)現(xiàn),運(yùn)算速度很快,一般耗時(shí) 0.04368ms。我的 CPU:2.3GHz ,i7

望采納,謝謝

分享標(biāo)題:關(guān)于麻將胡牌java代碼的信息
網(wǎng)站路徑:http://muchs.cn/article0/hheeio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣、標(biāo)簽優(yōu)化、建站公司、做網(wǎng)站企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)