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

📄 upgradelogic.h

📁 原子,棋牌游戏源代码,功能齐全,稳定,适合用于棋牌游戏开发
💻 H
字号:

#pragma once

#include "StdAfx.h"

//操作掩码
#define	UG_HUA_MASK					0xF0			//1111 0000
#define	UG_VALUE_MASK				0x0F			//0000 1111

//扑克花色
#define UG_FANG_KUAI				0x00			//方块	0000 0000
#define UG_MEI_HUA					0x10			//梅花	0001 0000
#define UG_HONG_TAO					0x20			//红桃	0010 0000
#define UG_HEI_TAO					0x30			//黑桃	0011 0000
#define UG_NT_CARD					0x40			//主牌	0100 0000
#define UG_ERROR_HUA				0xF0			//错误  1111 0000

//扑克出牌类型
#define UG_ERROR_KIND				0				//错误
#define UG_ONLY_ONE					1				//单牌
#define UG_DOUBLE					2				//对牌
#define UG_THREE					3				//三条
#define UG_HYDROGEN_BOMB			4				//氢弹
#define UG_DAO_HYDROGEN_BOMB		5				//刀氢弹
#define UG_ATOM						6				//原子
#define UG_DAO_ATOM					7				//刀原子
#define UG_DW_ATOM					8				//大王原子
#define UG_XW_ATOM					9				//小王原子
#define UG_BOMB						10				//炸弹

//升级逻辑类 (支持 2 副和 3 副扑克)
class CUpGradeGameLogic
{
	//变量定义
private:
	
	BYTE					m_iDaoCard;							//刀牌
	int						m_iStation[5];						//相对位置(方块,梅花,红桃,黑桃,主牌)
	
	CPtrList				m_ptrPSList;//牌列表

	struct PSTypeNode
	{
		int mps,mcount;

		PSTypeNode()
		{
			mps = -1;
			mcount = 0;
		}
	};


	//函数定义
public:
	//构造函数
	CUpGradeGameLogic(void);

	//功能函数(公共函数)
public:
	
	//设置刀牌
	void SetDaoCard(BYTE iDaoCard);
	//获取扑克数字
	inline int GetCardNum(BYTE iCard) { return (iCard&UG_VALUE_MASK)+1; }
	//获取扑克花色
	BYTE GetCardHuaKind(BYTE iCard);
	//排列扑克
	BOOL SortCard(BYTE iCardList[], BYTE bUp[], int iCardCount);
	//删除扑克
	int RemoveCard(BYTE iRemoveCard[], int iRemoveCount, BYTE iCardList[], int iCardCount);

	//重新排序
	BOOL ReSortCard(BYTE iCardList[], int iCardCount);

	//辅助函数
public:
	//是否单牌
	inline BOOL IsOnlyOne(BYTE iCardList[], int iCardCount) { return iCardCount==1; };
	//是否对牌
	BOOL IsDouble(BYTE iCardList[], int iCardCount);
	//是否三条
	BOOL IsThree(BYTE iCardList[], int iCardCount);
	//是否氢弹
	BOOL IsHydrogenBomb(BYTE iCardList[], int iCardCount);
	//是否刀氢弹
	BOOL IsDaoHydrogenBomb(BYTE iCardList[], int iCardCount);
	//是否原子
	BOOL IsAtom(BYTE iCardList[], int iCardCount);
	//是否刀原子
	BOOL IsDaoAtom(BYTE iCardList[], int iCardCount);
	//是否大王原子
	BOOL IsDWAtom(BYTE iCardList[], int iCardCount);
	//是否小王原子
	BOOL IsXWAtom(BYTE iCardList[], int iCardCount);
	//是否炸弹
	BOOL IsBomb(BYTE iCardList[], int iCardCount);
    //获取牌型
	BYTE GetCardShape(BYTE iCardList[], int iCardCount);
	//获取扑克相对大小
	int GetCardBulk(BYTE iCard);
	//对比单牌
	BOOL CompareOnlyOne(int iFirstCard, int iNextCard);
	//是否同花
	BOOL IsSameHua(BYTE iCardList[], int iCardCount);

	//其他函数
public:
	//获取扑克
	BYTE GetCardFromHua(int iHuaKind, int iNum);
	//查找分数
	int FindPoint(BYTE iCardList[], int iCardCount);

	//服务器专用函数
public:
	//混乱扑克
	BYTE RandCard(BYTE iCard[], int iCardCount);
	

	//客户端函数
public:
	//自动出牌函数
	BOOL AutoOutCard(BYTE iHandCard[], int iHandCardCount, BYTE iBaseCard[], int iBaseCardCount, BYTE iResultCard[], int & iResultCardCount, BOOL bFirstOut);
	//是否可以出牌
	BOOL CanOutCard(BYTE iOutCard[], int iOutCount, BYTE iBaseCard[], int iBaseCount, BYTE iHandCard[], int iHandCount);

	//内部函数
private:

	void SetCard(BYTE iCardList[], int iCardCount);
	void ClearPSInfo();

	//清除 0 位扑克
	int RemoveNummCard(BYTE iCardList[], int iCardCount);

};

⌨️ 快捷键说明

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