C++麻将算法.docx
C++麻将游戏算法深入解析
?麻将是一种大家最喜爱的娱乐活动之一,相信所有人都有接触过。我写的这版算法,是可以吃,碰,杠,还有把牌摸完没有人胡时的皇庄和包听。是用控制台方式来表现的,什么?控制台?
? ? ? ?对,因为是算法的设计,所以用控制台来表现当然最简单了。
?
? ? ? 当然,在交互时要用文字输入会有少许不便,不过这种形式的游戏可是图形游戏的鼻祖哦~
?
? ? ?好,废话不多说了,来说一下设计思路:
?
? ? ?对于麻将的一个玩家,都有一个牌墙的管理,这里封装了一副牌墙的各种算法,这个类我命名为CMJ。
? ? ?另外还有一个洗牌类,负责洗牌和发牌。这个类为CMJManage。
?
? ? ?我们先来看一下CMJ类。
CMJ.h:
?
[cpp] ?
#ifndef _CMJ_H ?
#define _CMJ_H ?
//============================================ ?
//Author:Honghaier ?
//Date:2006-12-20 ?
//QQ:285421210 ?
//============================================ ?
#include HYPERLINK /os/windows/ \t _blank windows.h ?
#include iostream ?
#include vector ?
#include algorithm ?
using namespace std; ?
??
??
#define MJPAI_ZFB ? ? ? ? ? ? ? 0 ? //中,发,白 ?
#define MJPAI_FENG ? ? ? ? ? ? ?1 ? //东西南北风 ?
#define MJPAI_WAN ? ? ? ? ? ? ? 2 ? //万 ?
#define MJPAI_TIAO ? ? ? ? ? ? ?3 ? //条 ?
#define MJPAI_BING ? ? ? ? ? ? ?4 ? //饼 ?
#define MJPAI_HUA ? ? ? ? ? ? ? 5 ? //花 ?
??
#define MJPAI_GETPAI ? ? ? ? ? ?true ? ?//起牌 ?
#define MJPAI_PUTPAI ? ? ? ? ? ?false ? //打牌 ?
//节点信息 ?
struct stPAI ?
{ ?
? ? int ? ? m_Type; ? ? ? ? ? ? //牌类型 ?
? ? int ? ? m_Value; ? ? ? ? ? ?//牌字 ?
??
} ?
; ?
??
//吃牌顺 ?
struct stCHI ? ? ? ? ? ? ? ? ? ? ?
{ ?
? ? int ? ? m_Type; ? ? ? ? ? ? //牌类型 ?
? ? int ? ? m_Value1; ? ? ? ? ? //牌字 ?
? ? int ? ? m_Value2; ? ? ? ? ? //牌字 ?
? ? int ? ? m_Value3; ? ? ? ? ? //牌字 ?
} ?
; ?
// ?m_Type ? ? ?m_Value ?
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-// ?
// ?0 ? ? ? | ? 中 ? 1 ? 发2 ?白 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
// ? ? ? ? ?| ?
// ?1 ? ? ? | ? 东 1 西2 ?南 ? ? 北 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
// ? ? ? ? ?| ?
// ?2 ? ? ? | ? 一万 ?二万 ?…… ?九万 ?
// ? ? ? ? ?| ?
// ?3 ? ? ? | ? 一条 ?二条 ?…… ?九条 ? ? ? ? ? ? ? ? ? ?
// ? ? ? ? ?| ?
// ?4 ? ? ? | ? 一饼 ?二饼 ?…… ?九饼 ?
// ? ? ? ? ?| ?
// ?5 ? ? ? | ? 春 ? ? ? 夏 ? ? ? 秋 ? ? ? 东 ? ? ? 竹 ? ? ? 兰 ? ? ? 梅 ? ? ? 菊 ?
// ? ? ? ? ?| ?
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-// ?
??
??
??
//
原创力文档

文档评论(0)