斗地主个人单机版总结(一)

Boom

送给自己一个生日礼物。
厌倦了从头再来,那就不要轻言放弃。

最近学习了cocos2dx 3.14版本,以及c++的学习,实战是检验真理的唯一的标准,所以写了个单机版的斗地主,来进行练习学习。
下一个版本,会增加网络版,也就是类似QQ斗地主的功能,三人可以联网斗地主。

这篇总结也是为大家提供参考,如果有好的想法,实现方法请联系我,共同学习共同进步。

开发环境: visual studio 2017, cocos2dx 3.14版本 c++

由于编码问题,会有中文乱码问题,在项目中 AppMicraos.h 文件中提供了转码方法。

首先,明确项目需求很重要。

NO BB , SHOW CODE!!!项目代码地址:https://github.com/CoderGLEric/Poker_Game.git

本项目实现的需求主要有:
1. 洗牌,随机发给三名玩家扑克
2.随机一名玩家开始叫地主
3.抢到的地主,开始出牌
4.玩家可以正常出牌。

分析需求:
一、生成一副扑克牌:
容器 vector v; 放54张牌

二、洗牌 :

 打乱顺序 

扑克牌: 3 4 5 6 7 8 9 10 11(J) 12(Q) 13(K) 14(尖)15(2) 16(小王) 17(大王)
花色:红 黑 花 块

class Poker
{
public:
     int mNum;
     int mColor;
};

三、发牌
三个人 随机发牌 留三张
分发给三个人 17轮

玩家 :Player
行为: 抓牌、抢地主、获得底牌、打牌

class Player
{
public:
void catchPoker(PopkerSpirte*pokerSprite);//抓牌        
void obtainSurplusPokers(PopkerSpirte*pokerSprite);//获得底牌      
void vieForLairdShip();//抢地主        
vector outPoker(vector lastPlayerOutPokers);//出牌
void refreUI();//刷新牌的位置

public:       
int playerIdx;//几号玩家标记
bool mLairdShip;//地主标记
multimap> mPokers;//持有牌

};

打牌规则:
        PokerRuleError = -1,                          //-1 不符合出牌规则
        PokerRuleDoubleKing,                          //0. 大小王两张最大
        PokerRuleSingle,                              //1.单张:大小顺序
        PokerRuleDouble,                              //2.一对:大小顺序
        PokerRuleTrouble,                             //3.三张:大小顺序
        PokerRuleUltra,                               //4.四张相同  炸弹
        PokerRuleLine,                                //5.顺子:(5张)(相同大小比最大)
        PokerRuleDoubleLine,                          //6.双顺:(3连对)(相同大小比最大 )
        PokerRuleTroubleWithSingle,                   //7.三带一张单牌
        PokerRuleTroubleWithDouble,                   //8.三带一对                            
        PokerRuleUltraWithTwoSingle,                  //9.四带二张单牌 
        PokerRuleUltraWithTwoDouble,                  //10.四带两队
        PokerRulePlane                                //11飞机   6  8 10 张牌

四、 出牌: 所选的牌属于哪种类型? (是单张,对,顺子。。。。。。)
//判断所选的牌属于那种类型

        //判断所选的牌属于那种类型
        static PokerRuleType checkPoker(const vector &pokers);
        //比较牌的大小
        static bool compare(const vector &last, const vector &now);

判断所剩牌数,mPokers.empty() == true; 牌全部出完,获胜,游戏结束

项目缺点总结:1.未实现,不抢地主功能。
2.未实现,提示出牌功能, 也未实现机器人出牌功能,如果实现提示功能,机器人功能相应也很好实现。
3.UI 上一些动画未实现。
4.未实现重新开始游戏。

下一版本期望:
1.首先完成未完成功能。
2.完成网络版,也就是类似QQ斗地主的功能,三人可以联网斗地主。
3.增加一些UI动画。

一个小项目,做了大概一周的时间,项目虽小,用新学的语言,学习到很多,而且也把一些未注意的点也注意到。

希望,欢迎大家积极提供意见,相互学习。谢谢。

注意:


斗地主个人单机版总结(一)_第1张图片
image.png

你可能感兴趣的:(斗地主个人单机版总结(一))