?? mjpai.h
字號:
#ifndef mjpaiH
#define mjpaiH
//2003.2-4 九江麻將 ---張浩
//
//聲明了mjpai類和一些屬性,如轉(zhuǎn)換到int的轉(zhuǎn)換操作
//判斷萬,條,餅 的函數(shù)
//
//還有一些算法,--判斷牌堆是否和,七對,碰碰和等
class mjpai{
int mj;
public:
enum mjcode{
wan1=11,wan2,wan3,wan4,wan5,wan6,wan7,wan8,wan9,
tiao1=31,tiao2,tiao3,tiao4,tiao5,tiao6,tiao7,tiao8,tiao9,
bing1=51,bing2,bing3,bing4,bing5,bing6,bing7,bing8,bing9,
zhong=71,fa=81,bai=91
};
mjpai(int im=0){mj=im;}
//mjpai(){mj=0;}
bool iswan()const;//萬
bool istiao()const;//條
bool isbing()const;//餅
bool iszi()const; //字
friend int comparemj(const mjpai m1,const mjpai m2);//-1...-8前者小于后者
//1...8前者大于后者
//0相等,100非同色,中與發(fā)返回50,中與中返回0
operator int()const{return mj;}//轉(zhuǎn)換操作符
};
bool isonecolor(const mjpai *pmj_arr,const int i_num);
//判斷一堆麻將是否同色 ,全字為假.遇到發(fā)財跳過,不理會 ,有發(fā)財也可以返回1
bool isonecolororzi(const mjpai *pmj_arr,const int i_num);
//同色和含字,全字也返回真
int pengandgang(const mjpai *pmj_arr,const int i_num,const mjpai mj);//碰 1,杠 2,無0
//int chi(const mjpai *pmj_arr,const int i_num,const mjpai mj);//吃,1萬 與2,3萬,返回100
//2與1,3 返回10
//3與1,2 返回1
//多種都行返回 和
//無 0
bool hupai(const mjpai *pmj_arr,const int i_num);//看牌是否成胡牌牌型,
//包括七對.不檢測牌數(shù)是否為14,如果不為14,則不會檢測七對
//i_num必須小等于14 3n+2
int hu(const mjpai *pmj_arr,int i_num,const mjpai mj);//
//i_num必須小等于13 3n+1
bool duting(const mjpai *pmj_arr,const int i_num);//獨聽,聽一張牌 i_num=3n+1 ,確保和
int qidui(const mjpai *pmj_arr,const int i_num);//七對 i_num=14
//非14即非七對返回0,七對返回1
//一個瀟灑+100 一個豪華+10
//如 豪華七對 11 雙豪華 21
// 七對 1 雙瀟灑 201
//須保證 相同牌最多4張
//計算瀟灑時已經(jīng)排序,但為動過pmj_arr
bool bukao(const mjpai *pmj_arr,int i_num,const mjpai mj);//不靠用于優(yōu)化聽牌
void mishel(mjpai *p,const int n);//排序
void mishel(int *p,int n);//排序
int getwei(int number,int pos);//獲得某個數(shù)的某位的值(個1,十2,百3)
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -