在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例C/C++语言基础 → 21点游戏(c++源码)

21点游戏(c++源码)

C/C++语言基础

下载此实例
  • 开发语言:C/C++
  • 实例大小:6.49KB
  • 下载次数:16
  • 浏览次数:210
  • 发布时间:2021-02-04
  • 实例类别:C/C++语言基础
  • 发 布 人:TheConquerK
  • 文件格式:.cpp
  • 所需积分:2
 相关标签: 21点 21 游戏

实例介绍

“21” 点纸牌游戏

1)基本要求

1.21点游戏是一个古老的扑克游戏,游戏的规则是:各个参与者设法使自己的牌达到总分21而不超过这个数值。扑克牌的分值取它们的面值,A充当1或者11分,J, Q和K人头牌都是10分。

2.庄家VS1~7个玩家。在开局时,包括庄家在内的所有参与者都有两张牌。玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐藏的。接下来,只要愿意,各个玩家都有机会依次再拿-张牌。如果是玩家的总分超过了21(称为引爆),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只要庄家的总分等于或小于16,那么他就必

须再拿牌。如果庄家引爆了,那么还没有引爆的所有玩家都将获胜,引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家与庄家打成平局。

2)设计内容

  依照规则设计单人游戏程序,其余玩家与庄家均有电脑操作。玩家使用自动决策系统。

3)设计思路

1.使用枚举定义52张扑克牌,有“红桃、黑桃、方块、梅花”四种花色,每种花色有“ACE、TWO~TEN、QUEEN、KING”十三张牌,牌点计算时,ACE在总分高于21时记1,低于21时记11。J、Q、K均记10点

2.定义1~7人参加游戏并输入每位玩家的姓名

3.洗牌,给参与者发牌并显示牌的花色及点数,隐藏庄家的一张牌

4.显示玩家状态

5.判断各玩家点数,询问玩家是否继续要牌,玩家仅控制玩家1,剩余玩家为自动决策系统出牌

自动决策系统设计基于玩家的出牌期望与爆牌几率,参考下表:


通过一组if语句与rand()函数进行设计概率。实现除玩家外的电脑自动出牌的决策系统。

6.所有玩家与庄家要牌结束,统计分数,输出胜负结果

7.询问是否开始新一局游戏

8.游戏类声明与函数声明如下:

class Game_class //声明21点游戏类

{

private:

        Card deck[52];//一副扑克牌

        int dealPos;//发牌位置

        Card hands[8][21];//hand[0]存庄家牌,hand[1-7]存玩家牌

        int numOfCard[8];//庄家及玩家的牌数

        char name[8][NAME_LENGTH];//庄家及玩家姓名

        int numOfPlayer;

        void shuffle();//洗牌

        int GetTotalScore(Card hand[21], int n);//返回一手牌的总分值

        void ShowStatus(int num, bool hideFirstCardAndTotalScore = false);//显示庄家(num=0)或玩家(num>0)的当前状态

        Card DealOneCard()

        {

                 return deck[dealPos ];//发一张扑克牌

        }

public:

        //方法声明

        Game_class();//无参构造函数

        virtual ~Game_class() {};

        void Game();

        char Auto_Decision(int i);//电脑玩家自动决策函数



4)流程图


5)程序开发效果演示


from clipboard



标签: 21点 21 游戏

实例下载地址

21点游戏(c++源码)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警