伍健柏 6.3

类结构和函数分析

   1mjpai

   数据:

1.  mj(int) private                     //当前的牌号

2.  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

       };

函数:

  1bool iswan()const;//          判断该MJ是否为万子,索子,同子中的一员

  2bool istiao()const;//

  3bool isbing()const;//

  4bool iszi()const; //

  5friend int comparemj(const mjpai m1,const mjpai m2);//  判断两只牌的差数,当差数在8-8之间

                                                 //  则返回100,若M1M2为字时则返回

                                                 //  50

 

2mjpaizu(麻将组牌)

  数据:

    1.  vector<mjpai> m_mjzu 通过一个可变变量记录数组记录牌的内容

  函数:

 1void mjpaizu::clear()   //清除向量表里的所用数据

2int mjpaizu::find(mjpai mj)  //查找向量表里面相关的数据

3Int takemj(int i)获取并取消第imj

 

3: mjpaikuaizu:private mjpaizu

  数据:

1.       i_numofkuai    int        //块数

2.       i_beginofkuai[8]  (int )         //块头的位置,最多只有8个块(吃碰杠四次,4个发财)

3.       isangang[8]      (int)         //是暗杠?

  函数:

1.    iske(int i_ikuai)               //判断块头的前8块是否有三个是相等的

2.    bugang (mjpai mj,bool isangang)  //执行扛操作,并把相应的牌除去

3.    Void deletemjkuai(int i)         //删除某一块,删除的原因是吃碰杠的操作

4.    Int findke (mjpai mj)           //在块中搜索mj

 

 

 

公共函数:

bool isonecolor(const mjpai *pmj_arr,const int i_num)               判断清一色

isonecolororzi(const mjpai *pmj_arr,const int i_num)                当从零开始到i_num,如果是清一色返回TRUE

int pengandgang(const mjpai *pmj_arr,const int i_num,const mjpai mj)  判断碰和扛,通过判断mj和其前面的若干只牌否有mj这一只牌有相邻关系

static bool hupai1(int * pi_mj,int i_num,int *pi_select)               判断是否吃糊

int qidui(const mjpai *pmj_arr,const int i_num)                      判断是否为碰碰糊

posted on 2004-06-03 18:45  bestofbest  阅读(306)  评论(0)    收藏  举报

导航