麻将游戏算法深入解析及实现代码
发布时间:2020-12-31 18:49:39 所属栏目:经验 来源:网络整理
导读:副标题#e# 麻将游戏算法深入解析及实现代码 这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现06年写的一个麻将算法,编译运行了一下,还是有点意思的,拿出来整理一下分享给大家。 麻将是一种大家最喜爱的娱乐活动之一,相信所有人都有
|
对应CPP:
#include "CMJManage.h"
//构造函数
CMJManage::CMJManage()
{
m_HZPaiNum = 0;
}
//析构函数
CMJManage::~CMJManage()
{
}
//初始化牌
void CMJManage::InitPai(int p_HZPaiNum)
{
m_HZPaiNum = p_HZPaiNum;
m_MJVec.clear();
//中发白
for(UINT i = 1 ; i <= 3 ; i++)
{
stPAI t_Pai;
t_Pai.m_Type = 0;
t_Pai.m_Value = i;
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
}
//东南西北
for(UINT i = 1 ; i <= 4 ; i++)
{
stPAI t_Pai;
t_Pai.m_Type = 1;
t_Pai.m_Value = i;
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
}
//万
for(UINT i = 1 ; i <= 9 ; i++)
{
stPAI t_Pai;
t_Pai.m_Type = 2;
t_Pai.m_Value = i;
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
}
//条
for(UINT i = 1 ; i <= 9 ; i++)
{
stPAI t_Pai;
t_Pai.m_Type = 3;
t_Pai.m_Value = i;
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
}
//饼
for(UINT i = 1 ; i <= 9 ; i++)
{
stPAI t_Pai;
t_Pai.m_Type = 4;
t_Pai.m_Value = i;
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
m_MJVec.push_back(t_Pai);
}
XiPai();
}
//洗牌
void CMJManage::XiPai()
{
srand( GetTickCount() );
random_shuffle(m_MJVec.begin(),m_MJVec.end());
}
//起牌
stPAIEx CMJManage::GetAPai()
{
//如果所有牌都起完了
stPAIEx t_Pai;
t_Pai.m_NewPai.m_Type = m_MJVec.back().m_Type;
t_Pai.m_NewPai.m_Value = m_MJVec.back().m_Value;
t_Pai.m_PaiNum = m_MJVec.size()-1;
if(t_Pai.m_PaiNum ==m_HZPaiNum)
{
t_Pai.m_IsHZ = true;
}
else
{
t_Pai.m_IsHZ = false;
}
//扔去一个
m_MJVec.pop_back();
return t_Pai;
}
(编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

