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

2019-04-02 19:55

目 录

1、课题设计内容与主要功能···························(1)

2、课题分析·································(1)—(7) (1)项目实现方法··························(1)--(2) (2)类声明······································(3) (3)核心算法代实现代码····················(3)--(7)

3、实现步骤··································(7)—(8)

4、测试与结论·······························(9)—(11)

5、总结····································(11)—(12)

6、参考书目········································(12)

7、附件····································(13)—(28)

6

一、课题设计内容与主要功能

(1)定义一副扑克牌(不包括两个王),四种花色十三个点数共52张牌,游戏过程中系统自动随机从这52张牌中抽牌发给参与者。

(2)将J、Q、K的点数改为10点,A的点数可由系统自动在1和11之间选择最佳的点数。 (3)系统提示输入玩家数(1 ~4)、玩家姓名以及玩家所带的金钱数。

(4)系统提示各玩家输入所押的金钱数,新的一局开始时可以重新设定押的金钱数。

(5)游戏开始,系统先自动给每位参与者发两张牌,并且隐藏庄家的第一张牌,然后依次询问玩家是否需要继续发牌,玩家输入“Y”,则再发一张牌给该玩家,玩家输入“N”,则跳过该玩家。

(6)当所有玩家都不再要牌,输出玩家总分值、胜负情况,并输出各参与者的余额。 (7)玩家再押钱,新的一局游戏开始。

(8)当有玩家的金钱等于0时,该盘游戏结束,统计各位玩家胜的局数和平局的局数,输出统计结果。提示玩家是否选择重新再来一盘。

二、课题分析

1、项目实现方法 (1)函数调用关系 主函数Main game_of_21_point。头函数 实用程序包utility.h头函数 定义52张牌的头函数card.h 游戏运行函数Game( ) 状态显示函数ShowStatus() 数据初始化函数GameOf21Point( ) 洗牌函数Shuffle( ) 点数计算函数GetTotalScore( )

7

(2)游戏过程示意图

开始界面 选择1~4位玩家并输入各玩家的姓名及金钱数 开始游戏 玩家输入押的金钱数,给每位参与者随机发两张牌 给该玩家发一张牌 显示庄家及玩家状态是 判断各参与者点数是否大于21 否 是 问玩家是否还要牌 否 显示各参与者状态,统计总点数.输出胜负情况并计算输出金钱余额 是否有玩家金钱为0 否 是 输出各玩家战绩 是 提问是否再来一盘 否 退出游戏 8

2、类声明

class GameOf21Point {

private:

// 数据成员:

Card deck[52]; // 一副扑克牌 int dealPos; // 发牌位置

Card hands[4][21]; // hand[0]存储庄家手中的牌, hand[1~4]存储玩家手中的牌

int numOfCard[4]; // 庄家(numOfCard[0])及玩家(numOfCard[1~4])手中的牌数 char name[4][LEN_OF_MAX_NAME]; // 庄家与玩家姓名 int numOfPlayer; // 玩家人数

// 辅助函数

void Shuffle( ); // 洗牌, 将扑克牌混在一起以便产生一种随机的排列 int GetTotalScore(Card hand[21], int n); // 返回一手扑克牌的总分值 void ShowStatus(int num, bool hideFirstCardAndTotalScore = false); // 显示庄家(对应num=0)或玩家(对应num=1~4)的当前状态 Card DealOneCard( ){ return deck[dealPos++]; } // 发一张扑克牌

public:

// 方法声明

GameOf21Point( ); // 无参数的构造函数

virtual ~GameOf21Point( ){ } // 析构函数,当一盘游戏结束时,清空数据。 void Game( ); // 运行游戏 };

3、核心算法及实现代码 (1)枚举结构体

typedef enum {

A,2,3,4,5,6,7,8,9,10,J,Q,K十三张牌; } RankType; // 扑克牌面值

typedef enum {

梅花,红桃,黑桃,方块 四种花色; } SuitType; // 扑克牌花色

9

(2)数据结构体

struct Card // 扑克牌结构体 {

前面枚举的十三张牌的面值; 前面枚举的四种花色; };

struct Player // 玩家金钱和战绩结构体 {

玩家金钱总数; 玩家押的金钱数; 玩家赢的局数; 玩家打平局的局数; };

(3)功能函数模块

数据初始化函数GameOf21Point()//初始化扑克牌,各参与者手中的牌数、姓名和金钱等 GameOf21Point::GameOf21Point( ) {

当前扑克牌位置在庄家;

for (int 牌花色= 0; 牌花色< 4; 牌花色++) {

for (int 牌面值= 1; 牌面值<= 13; 牌面值++) {

给curPos位置的牌赋花色; 给curPos位置的牌赋面值; 牌的位置移到下一个; } }

输出提示 \多少人加入游戏?(1~4):\ 输入玩家人数;

while (玩家人数小于1或者大于4) {

输出玩家人数不合格\人数只能在1~4之间, 请重新输入人数:\ 重新输入玩家人数; }

初始化发牌位置,从庄家开始发牌; 定义临时变量i;

for (i = 0; i <=玩家人数; i++) 初始化参与者手中的扑克牌数为0;

让庄家name[0]的输出名为“庄家”; for (i = 1; i <= 玩家人数; i++) {

提示输入玩家姓名 \输入第\位玩家的姓名:\ 输入玩家姓名;

10


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

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

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

马上注册会员

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