实验一 21点纸牌游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

冰之龙设计

实验一21点纸牌游戏

专业:软件工程班级:09软工学号:1200911041XX 姓名:XXX

实验日期:2010-09-30 实验地点:B102 指导老师:吴景岚

一.实验原理

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

二.实验目的

庄家对付1到7个玩家。在一局开始时,包括庄家在内的所有参与者都有两张牌。玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐蔽的。接下来,只有愿意,各个玩家都有机会依次再拿一张牌。如果某个玩家的总分超过了21(称为“引爆”),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只要庄家的总分等于或小于16,那么他就必须再拿牌,如果庄家引爆了,那么还没有引爆的所有玩家都将获胜。引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家与庄家打成平局。

三.实验方法

1.首先定义表示扑克牌花色与面值的枚举类型,这样程序可读性更

2.其次,方法Game()用来运行游戏,下面为用伪代码描述的整个游戏的流程:

洗牌

给庄家和玩家发最初的二张牌

隐藏庄家的第一张牌

显示庄家和玩家手中的牌

依次向玩家发额外的牌

显示庄家的第一张牌

给庄家发额外的牌

if(庄家引爆)

没有引爆的玩家人赢

引爆的玩家平局

else

for(每个玩家)

if(玩家没有引爆且玩家的总分比庄家大) 宣布玩家赢

else if(玩家的总分与庄家相等) 宣布平局

else 宣布玩家赢

四.实验步骤

(1)建立工程game_of_21_point

(2)将软件包中的utlity.h复制到game_of_21_point文件夹中,并将utility.h加入到工程中。

(3)建立头文件card.h,声明相关用户自定义类型,结构体Card 的运算符 << 进行重载,具体内容如下:

//文件路径名:game_of_21_point\card.h

#ifndef__CARD_H__

#define__CARD_H__

Typedef enum

{ //扑克牌面值:ACE(A),TWO(2)到TEN(10),JACK(J),QUEEN(Q),KING(K)

ACK=1,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING

} RankType;

Typedef enum

{ //扑克牌花色:(梅花),DIAMONDS(方块),HEARTS(红桃)和SPADES(黑桃)

CLUBS,DIAMONDS,HEARTS,SPADES

} suitType;

Struct card

{ //扑克牌结构体

RankType rank;

suitType suit;

};

Ostream &operator<<(ostream,const card &card)

//操作结果:重载<<运算符

{ //输出花色

if(card.suit==CLUBS) outStream<< “梅花”;

else if(card.suit==DIAMONDS) outStream<<“方块”;

else if(card.suit==HEARTS) outStream<<“红桃”;

else if(card.suit==SPADES) outStream<<“黑桃”;

//输出面值

if(card.rank==ACE) outStream<<“A”;

else if(card.rank==JACK) outStream<<“J”;

else if(card.rank==QUEEN) outStream<<“Q”;

else if(card.rank==KING) outStream<<“K”;

else cout<<(int)card.rank;

return outStream;

}

#endif

(4)建立头文件game_of_21_point.h,声明及实现21点游戏类GameOf21Point.具体内容如下:

//文件路径名:game_of_21_point\game_of_21_point.h

#ifndef__GAME_OF_21_POINT_H__

#define__GAME_OF_21_POINT_H__

#include“card.h”

#define LEN_OF_MAX_NAME 21

//21点游戏类 Gameof21point声明

Class Gameof21point

{ private:

Card deck[52];

int dealpos;

card hands[8][21];

int numofcard[8];

char name[8][LEN_OF_MAX_NAME];

int numofplayer;

void shuffle();

int GetTotalscore(card hand[21],int n);

void showstatus(int num,bool hideFirsrcardAndTotalscore=false);

相关文档
最新文档