- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
题目1编写一个能模拟简单猜扑克牌大小游戏的应用程序。该游戏的名称为Hi-Low,其玩法和规则如下:1玩法①洗牌:每盘游戏开始之前,使扑克牌的排列顺序充分随机。②发牌:每局开始时,从未使用的扑克牌集合中顺序发给玩家5张扑克牌(明牌)。③猜点:从未使用的扑克牌集合中按顺序取出一张扑克牌(即庄家的暗牌),要求玩家将手中的第一张扑克牌和这张庄家的暗牌进行比较,确定哪张牌大?④积分:玩家确定回答后,翻开被猜的扑克牌(暗牌变成明牌),同时根据玩家回答的正确与否显示相应的提示,并为玩家的游戏成绩积分。然后将这两张已经比较过的牌回收到已经使用过的扑克牌集合中,玩家手中的下一张扑克牌成为新的一张扑克牌。⑤对玩家手中剩余的扑克牌顺序重复第③和④步操作,直至玩家手中不再有剩余的扑克牌时,一局游戏结束。⑥如果未使用的扑克牌集合中的扑克牌数目多余10张,则从第②步自动开始进行本盘游戏的下一局。⑦询问玩家是否继续进行下一盘游戏,如果继续,则从第①步开始进行新的一盘游戏。2规则①积分规则:· 猜中1次,积1分;猜错1次,不积分。· 1局中连续猜中3次,除正常积分外奖励1分;连续猜错3次,罚1分。· 1局全部猜中,除正常积分外奖励3分;1局全部猜错,罚3分。· 玩家的最低积分为0,即不出现负分。②牌面大小比较规则:每张扑克牌的牌面由花色(梅花Club、方块Diamond、红心Heart和黑桃Spade)和牌点(A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K)组成。确定两张扑克牌牌面大小的规则有两条:· 如果两张牌面的牌点不同,则牌面大小仅与牌点有关,而与牌面的花色无关。牌点的大小顺序为:2 3 4 5678910JQK A。· 如果两张牌面的牌点相同,则牌面大小仅与牌面的花色有关。花色的大小顺序为:ClubDiamondHeartSpade。要求:1 按照面向对象的思想分析题意要求实现的需求,合理的分解对象类。2 设计和实现各个组成类。3 在主函数main()中,创建各个组成类对象,并通过这些类对象使用类功能实现游戏Hi-Low。*4要求编写编程文档,文档内容包括: ① 绘制各个组成类的类图与类图之间的静态关系图 ② 各个组成类的类定义描述 ③ 主要功能函数的算法描述 ④ main()函数的流程图提示:1 分析各种扑克牌游戏,可以归纳出如下几条规律:①一副扑克牌,即扑克牌的全集是有54张具有不同牌面的扑克牌组成的。②任何一种扑克牌游戏都需要使用由n张扑克牌组成的集合,该集合可以是一副扑克牌的全集,也可以是一副扑克牌的子集,甚至可以是多副扑克牌的并集。例如Hi-Low游戏需要使用一副扑克牌中除大小王牌Trump以外的52张牌组成的子集。③任何一种扑克牌游戏都会根据自己的玩法和规则,确定一种若干步特定操作构成的游戏程式。④每一种扑克牌游戏都会根据积分规则确定一个相对独立的积分计算器,依据游戏结果为玩家计算积分。2 根据上述分析,建议进行如下的对象类分解:① 将扑克牌对象设计为一个类Card,用于定义标识每一张特定扑克牌的牌面(花色和牌点)和显示操作。为此该类可以用如下属性和操作描述:属性:· 牌面属性face作为每张扑克牌唯一标识,确定了每张牌的花色和牌点。该属性可以声明为一个包含了两个元素的整型数组。其中face[0] 用于存放牌面的牌点:1-13对应的牌点为2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A;face[1]用于存放牌面的花色:1–4 对应的花色为Club, Diamond, Heart, Spade。为了使该属性不能被随意修改,因此该属性应该声明为私有成员。操作:· 构造函数:无参数,便于创建对象数组。 · 初始化操作Init:依据传入参数值,为牌点face[0]和花色face[1]赋值。该操作应向外提供服务。· 获取牌点操作Value:无须参数,返回face[0]的当前值。该操作应向外提供服务。· 获取花色操作Face:无须参数,返回face[1]的当前值。该操作应向外提供服务。· 显示牌面操作Show:依据牌面属性face的当前值,显示相应的字符串。例如,当一张牌的牌面属性face[0]=12;face[1]=4,则显示的字符串就可以是Spade– Q。该操作应向外提供服务。注意,如果在图形界面的应用程序中该操作就可以显示相应的牌面图形。② 考虑到结构的合理性,可以将计算游戏积分所需要属性和操作封装在一个类中。该类可以命名为Counter,它所包含的属性和操作如下:属性:· 积分属性score:用于记录游戏的积分值。为了能记录足够大的积分值,该属性应声明为长整型long。· 连续标志属性sequence:用于存放玩家当前猜点操作的连续状态:连续猜中时,sequence 0(连续猜中的
文档评论(0)