加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 创业 > 经验 > 正文

麻将游戏算法深入解析及实现代码

发布时间:2021-01-01 04:47:23 所属栏目:经验 来源:网络整理
导读:麻将游戏算法深入解析及实现代码 这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现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; 
} 

 

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读