Skip to content

Latest commit

 

History

History
69 lines (54 loc) · 2.82 KB

README.md

File metadata and controls

69 lines (54 loc) · 2.82 KB

QPAlgorithm

C++ 棋牌算法封装,牌九,扎金花,十三水...
	cfg 文件读取
	funcC 组合函数类
	pb2Json protobuf/json格式转换
	weights 按权重计算随机概率
	
	PJ 		牌九算法	
	s13s	十三水算法,也是最复杂的一个
	zjh		炸金花算法实现
	
	十三水算法接口说明:
		//枚举牌型测试
		static void TestEnumCards(int size);
		
		//枚举牌型测试
		//filename char const* 文件读取手牌 cardsList.ini
		static void TestEnumCards(char const* filename);
		
		//玩家发牌测试
		static void TestPlayerCards();
		
		//开始游戏测试
		static void TestProtoCards();
		
		//手动摆牌测试
		static void TestManualCards();
		
		//确定牌型/比牌测试
		//先让每个玩家确定手牌三墩牌型,手动摆牌或者从枚举几组中任选一组作为手牌牌型与其他玩家比牌,
		//再玩家之间两两比牌,头敦与头敦比,中墩与中墩比,尾墩与尾墩比,并计算输赢积分(输赢多少水,统计打枪/全垒打)
		static void TestCompareCards();
		
		//手牌牌型分析(特殊牌型判断/枚举三墩组合),算法入口 /////////
		//src uint8_t const* 一副手牌(13张)
		//n int 最大枚举多少组墩(头墩&中墩&尾墩加起来为一组)
		//chairID int 玩家座椅ID
		//hand handinfo_t& 保存手牌信息
		static int AnalyseHandCards(uint8_t const* src, int len, int n, handinfo_t& hand);
		
		//单墩牌型判断(3/5张牌)
		//dt DunTy 指定为第几墩
		//src uint8_t const* 一墩5张或3张的牌
		static HandTy GetDunCardHandTy(DunTy dt, uint8_t const* src, int len);
		
		//牌型相同的src与dst比大小,牌数相同
		//src uint8_t const* 单墩牌(3/5张)
		//dst uint8_t const* 单墩牌(3/5张)
		//clr bool 是否比花色
		//ty HandTy 比较的两单墩牌的普通牌型
		static int CompareCards(uint8_t const* src, uint8_t const* dst, int n, bool clr, HandTy ty);
		
		//按照尾墩5张/中墩5张/头敦3张依次抽取枚举普通牌型
		//src uint8_t const* 手牌余牌(13/8/3),初始13张,按5/5/3依次抽,余牌依次为13/8/3
		//n int 抽取n张(5/5/3) 第一次抽5张余8张,第二次抽5张余3张,第三次取余下3张抽完
		//classify classify_t& 存放分类信息(所有重复四张/三张/二张/散牌/余牌)
		//enumList EnumTree& 存放枚举墩牌型列表数据 dt DunTy 指定为第几墩
		static void EnumCards(uint8_t const* src, int len,
			int n, classify_t& classify, EnumTree& enumList, DunTy dt);
		
		//返回组墩后剩余牌/散牌
		//src uint8_t const* 一副手牌13张
		//duns dundata_t const* 一组墩(头/中/尾墩)
		//cpy uint8_t *cpy 组墩后剩余牌 cpylen int& 余牌数量
		static void GetLeftCards(uint8_t const* src, int len,
			dundata_t const* duns, uint8_t *cpy, int& cpylen);