⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mjpai.h

📁 九江麻将源代码
💻 H
字号:
#ifndef mjpaiH
#define mjpaiH
//2003.2-4 九江麻将 ---张浩
//
//声明了mjpai类和一些属性,如转换到int的转换操作
//判断万,条,饼 的函数
//
//还有一些算法,--判断牌堆是否和,七对,碰碰和等
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非同色,中与发返回50,中与中返回0

    operator int()const{return mj;}//转换操作符
};

bool isonecolor(const mjpai *pmj_arr,const int i_num);
//判断一堆麻将是否同色 ,全字为假.遇到发财跳过,不理会 ,有发财也可以返回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);//看牌是否成胡牌牌型,
    //包括七对.不检测牌数是否为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张
                                                //计算潇洒时已经排序,但为动过pmj_arr

bool bukao(const mjpai *pmj_arr,int i_num,const mjpai mj);//不靠用于优化听牌



void mishel(mjpai *p,const int n);//排序
void mishel(int *p,int n);//排序
int getwei(int number,int pos);//获得某个数的某位的值(个1,十2,百3)
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -