伍健柏 6.3
类结构和函数分析
1:mjpai
数据:
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
};
函数:
1.bool iswan()const;//万 判断该MJ是否为万子,索子,同子中的一员
2.bool istiao()const;//条
3.bool isbing()const;//饼
4.bool iszi()const; //字
5.friend int comparemj(const mjpai m1,const mjpai m2);// 判断两只牌的差数,当差数在8和-8之间
// 则返回100,若M1和M2为字时则返回
// 50
2:mjpaizu(麻将组牌)
数据:
1. vector<mjpai> m_mjzu 通过一个可变变量记录数组记录牌的内容
函数:
1.void mjpaizu::clear() //清除向量表里的所用数据
2.int mjpaizu::find(mjpai mj) //查找向量表里面相关的数据
3.Int takemj(int i)获取并取消第i个mj
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) 收藏 举报
浙公网安备 33010602011771号