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

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<Poker> 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<Poker> outPoker(vector<Poker> lastPlayerOutPokers);//出牌
void refreUI();//刷新牌的位置

public:       
int playerIdx;//几号玩家标记
bool mLairdShip;//地主标记
multimap<int, PopkerSpirte*,greater<int>> 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<Poker> &pokers);
        //比较牌的大小
        static bool compare(const vector<Poker> &last, const vector<Poker> &now);

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

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

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

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

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

注意:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,866评论 25 708
  • 两人斗地主 一、体系结构图 通讯模型 大功能模块切换关系 二、逻辑流程图 登录login.PNG 主页面开始界面....
    wuyumumu阅读 524评论 0 0
  • 今天是到新公司上班的第一天,总体感觉还不错,要看后面具体的情况,准备及时更新了
    微笑的老虎阅读 198评论 0 0
  • 突然很羡慕身边有爷爷奶奶外公外婆的人,很羡慕,你可以从他们的世界了解了解很多你人生以后要经历的事,可是我最后的机会...
    噗梅阅读 118评论 0 0
  • 文丨红瑀 【中篇小说】爱情曾来过(目录) 《爱情曾来过》(7)同学猛追求 进到教室,从四面八方传来的窃窃私语,晓雨...
    红瑀阅读 493评论 39 40