《“21点”纸牌游戏实验报告.doc》由会员分享,可在线阅读,更多相关《“21点”纸牌游戏实验报告.doc(9页珍藏版)》请在三一办公上搜索。
1、课 程 设 计 报 告课程名称:面向对象程序设计与开发课程设计设计题目:“21点”纸牌游戏年 级:09系 别:计算机学院专 业:计算机科学与技术小组成员名单:陈坚鹏 李浩艺 陈子龙任课教师:莫家庆老师完成时间:2012年 3 月 30 日肇庆学院计算机学院课程设计结果评定评阅意见:(1)内容设计 (20分):优()、良()、中()、一般()、差(); (2)流程分析(20分):优()、良()、中()、一般()、差(); (3)数据定义(30分):优()、良()、中()、一般()、差();(4)代码编写(20分):优()、良()、中()、一般()、差();(5)创新能力(10分):优()、良()
2、、中()、一般()、差();(6)格式规范性、设计态度及考勤是否降等级:是()、否()其它意见:评阅人: 2012 年 月 日成绩等级:目 录“21点”纸牌游戏11 概述12 实验内容13 概要设计24 测试结果和分析55 课程设计体会5“21点”纸牌游戏1 概述本课程设计通过编写相关代码实现“21点”游戏。使用语言:C+语言编译环境:VC+ 6.02 实验内容1、问题描述“21点”是一个古老的扑克牌游戏,游戏规则是:各个参与者设法使自己的派达到总分21而不超过这个数值。扑克牌的分值取它们的面值,A充当1分或11分(由玩家自己选择一种分值),J、Q和K人头牌都是10分。庄家对付17个玩家。在一
3、局开始时,包括庄家在内的所有参与者都有两张牌。玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐藏的。接下来,只要愿意,各个玩家都有机会再拿一张牌。如果某个玩家的总分超过了21(称为“引爆”),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只要庄家的总分等于或小于16,那么他就必须再拿牌。如果庄家引爆,那么还没有引爆的所有我那家都将获胜,引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家和庄家打成平局。基本要求:编写程序实现游戏,计算机作为庄家,17个人作为普通玩家参与游戏。游戏程运
4、行输出如下所示。多少人加入游戏?(17):2输入第1位玩家的姓名:张三输入第2位玩家的姓名:李四游戏开始:庄家:梅花7张三:红桃7方块J总分值17李四:红桃J红桃3总分值13张三,你想再要一张牌吗(y,n)?n李四,你想再要一张牌吗(y,n)?y李四:红桃J红桃3梅花10总分值23李四引爆!庄家:方块10,梅花7总分值17张三,唉,你打平局了!李四,对不起,你输了!你想再玩一次吗(y,n)?2、需求分析(1)测试边界内的值。(2)测试边界值。(3)测试边界外的值。(4)输出结果。3 概要设计1、存储结构typedef enum/扑克牌面值:ACE(A),TWO(2)TEN(10),JACK(J
5、),QUEEN(Q),KING(K)ACE=1,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KINGRankType;typedef enum/扑克牌花色:CLUBS(梅花),DIAMONDS(方块),HEARTS(红桃),SPADES(黑桃)CLUBS,DIAMONDS,HEARTS,SPADESSuitType;struct Card /扑克牌结构体RankType rank; /扑克牌面值SuitType suit; /扑克牌花色/21点游戏类gameof21point声明class GameOf21Pointpriva
6、te:Card deck52; /一副扑克牌int dealPos; /发牌位置Card hands821; /hand0存储于庄家手中的扑克牌, hand17存储于各位玩家手中的扑克牌int numOfCard8; /庄家numOFCard0及玩家numOFCard17手中的扑克牌数char name8LEN_OF_MAX_NAME; /庄家与玩家姓名int numOfPlayer; /玩家人数void Shuffle(); /洗牌,将扑克牌混在一起以便产生一种随机的排列int GetTotalScore(Card hand21,int n); /返回一手扑克牌的总分值void ShowSt
7、atus(int num,bool hideFirstCardAndTotalScore=false); /显示庄家(对应num=0)或玩家(对应num0)当前的状态Card DealOneCard()return deckdealPos+; /发一张扑克牌public:GameOf21Point();virtualGameOf21Point()void Game(); /运行游戏;2、函数ostream& operator(ostream& outStream, const Card &card)/该函数用来重载0)当前的状态Card DealOneCard()return deckdeal
8、Pos+; /该函数用来发一张扑克牌int GameOf21Point:GetTotalScore(Card hand21,int n )/返回一手扑克牌的总分值Void Game();/该函数实现游戏的运行,开始。3、流程图输入加入游戏的人数输入游戏者姓名游戏开始随机发牌开始玩家是否添牌添加一张牌,下个玩家显示庄家的牌点数21庄家引爆玩家是否引爆是打平局玩家赢是玩家是否引爆是玩家输否玩家点数是否大于庄家是否否玩家点数是否等于庄家是否显示结果再玩一次是否4 测试结果和分析5 课程设计体会 本次课程设计,使我对C+面向对象程序设计有了进一步的认识和掌握,在设计的过程中,我们更好的懂得了团队合作的重要性,程序设计过程中,出现过几次小错误,都是在头文件处出现的,通过大家的努力还有查阅了相关资料,最后终于把问题解决了。