《C++》21点扑克牌游戏程序 - 图文(3)

2019-04-02 19:55

提示输入玩家金钱数\你带了多少钱啊?\ 输入玩家金钱数; }

定义一个变量z等于0; 初始化庄家的金钱为0;

for (i = 1; i <= 玩家人数; i++) {

z的值等于所有玩家的金钱之和; }

定义庄家的金钱数为所有玩家金钱的平均值;

洗牌函数Shuffle( ) // 洗牌, 将扑克牌混在一起以便产生一种随机的排列组合 void GameOf21Point::Shuffle( ) {

设置当前时间为随机数种子

for(int 牌的位置=51; 牌的位置>0; 牌的位置--)//产生随机的位置为curPos的扑克牌 {

int pos=Rand::GetRand(牌的位置+1); //生成0~curPos之间的随机数 调用swap()函数; //交换deck[pos]与deck[curPos]

} }

点数计算函数GetTotalScore( )

int GameOf21Point::GetTotalScore(Card hand[21], int n) // 返回一手扑克牌的总分值 {

定义临时变量pos; 初始化总分值为0;

for(pos=0;pos<手中的牌数;pos++) { 如果手中有张A,总分加11; 如果手中有牌J或Q或K,总分加10; 如果手中的牌是2~10中的,总分加上对应的2~10; }

for(pos=0;总分大于21且pos<手中的牌数;pos++) {

如果手中有张A,总分减10;

} 用return返回总分 }

状态显示函数ShowStatus( ) // 显示各玩家手中的牌和总分值

void GameOf21Point::ShowStatus(int 参与者数,bool hideFirstCardAndTotalScore) {

如果hideFirstCardAndTotalScore为真,隐藏庄家首张牌,输出“不让你看”代替;

否则输出各参与者首张牌; for(int i=1;i<第num位玩家手中的牌;i++)

11

输出各参与者手中其他的牌;

如果hideFirstCardAndTotalScore为假; 输出各参与者的总分;

如果第num位玩家的总分大于21; 输出玩家爆了; }

游戏运行函数Game( ) // 运行游戏 void GameOf21Point::Game( ) {

定义临时变量p和记录局数的变量s; for(p=1;p<=玩家数;p++) {

初始化赢局数为0; 初始化平局数为0; }

定义goto语句的标识符ks,定义s++记录该盘游戏进行的局数; 洗牌;

for(p=1;p<=玩家数;p++) {

输入玩家押的钱; 当玩家押的钱大于余额; {

重新输入玩家押的钱; } }

定义临时变量i,j; 清零庄家手中的牌;

for(i=1;i<=玩家数;i++) 初始化参与者手中的 清零玩家手中的牌; 牌和发牌的位置

复位发牌位置到庄家;

for(i=0;i<2;i++)

调用DealOneCard( )函数,为庄家发两张牌;

调用ShowStatus()函数,显示庄家的状态,隐藏首张牌和总分值。 for (i=1;i<=玩家数;i++) {

for(j=0;j<2;j++)

调用DealOneCard( )函数,为第i位玩家发两张牌; 调用ShowStatus()函数,显示第i位玩家手中的牌和总分值 } 换行;

for(i=1;i<=玩家数r;i++) {

定义goto的标识符Pai,问玩家是否继续要牌; 如果玩家输入“Y” ; {

12

调用DealOneCard()函数,为第i位玩家再发一张牌; 调用ShowStatus(),显示第i位玩家手中的牌; 如果第i位玩家得总分小于21; {

跳转到标识符Pai; } } }

显示庄家手中的牌和总分;

当庄家的点数不大于16; 当庄家的点数不大

{ 于16,庄家必须 调用DealOneCard()函数,给庄家再发一张牌; 再要牌直到大于 显示庄家手中的牌和总分; 16并决定不再要牌 }

输出游戏结果余额; 当各参与者都还有钱; 跳转到标识符ks;

当其中有参与者没有钱了; 输出游戏结果、余额和战绩; }

三、实现步骤

(1)创建card.h头函数

? 定义_CARD_H_

? 定义牌面值和花色为枚举常量并初始化 typedef enum { ??.. } RankType; typedef enum { ???. } SuitType;

? 定义一个结构体表示牌面值和花色

Struct Card {

RankType rank; SuitType suit;

};

(2)创建game_of_21_point.h头函数

? 定义_GAME_OF_21_POINT_H_

13

? 包含头函数card.h

? 定义结构体表示玩家的金钱数、玩家押的金钱数、玩家赢的局数和玩家平的局

struct Player {

int money; int yq; int sl; int pj;

};

? 声明类GameOf21Point

? 编写实体部分,包含功能函数: 1) GameOf21Point() 2) Shuffle()

3) GetTotalScore(Card hand[21], int n)

4) ShowStatus(int num,bool hideFirstCardAndTotalScore) 5) Game()

(3)创建实用程序工具包utility.h

? 定义__UTILITY_H__ ? 包含各类头文件

? 包含几个有用的实用函数模块

(4)创建主程序函数main.cpp

? 包含utility.h

? 包含game_of_21_point.h ? 编写main函数主体 {

system(\输出窗口颜色 do

{

GameOf21Point objGame; // 21点游戏对象 objGame.Game(); // 运行游戏 if(Pla[0].money<=0) cout<<\.\ else

cout <<\ } while (UserSaysYes()); // 肯定回符循环, 直到得到否定回答为止

system(\ // 调用库函数system() return 0; // 返回值0, 返回操作系统

}

(5)在vc++ 6.0环境下运行,进行测试、修改。

14

四、测试与结论

运行程序得到如下界面

输入玩家数为6,系统提示错误,重新输入2,然后根据系统提示输入相应内容,得下界面:

输入Y,程序继续运行,按照提示输入相应内容,完成一局游戏。

15


《C++》21点扑克牌游戏程序 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:仓泵二期技术条件

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: