图一 Hi_Low游戏界面
分析得知,我设计了三个类,分别是:
① 将扑克牌对象设计为一个类Card,用于定义标识每一张特定扑克牌的牌面(花色和牌点)和显示操作。其中特意说明的属性是 索引标识属性index作为每张扑克牌唯一标识,是确定牌面花色和牌点的依据。它的值域为0 - 53的整数值,每一个index值与一张特定牌面的花色和牌点相对应:
0 - 12对应梅花Club的A 2 3 4 5 6 7 8 9 10 J Q K;
13 - 25对应方块Diamond的A 2 3 4 5 6 7 8 9 10 J Q K;
26 - 38对应红心Heart的A 2 3 4 5 6 7 8 9 10 J Q K;
39 - 51对应黑桃Spade的A 2 3 4 5 6 7 8 9 10 J Q K。
52对应小王牌L Trump,53对应大王牌B Trump
显然,index除以13所得到的整数商可以表示花色,而index模13所得到的余数恰恰是牌点(大小王牌的index值除外) 牌面显示属性face:在图形用户界面的应用程序中该属性是描述牌面图形的 复杂图形类;而在控制台文本界面的应用程序中该属性是字符数组类型,用于存放描述牌面的字符串。例如:C-A表示梅花A,D-6表示方块6,H-10 表示红心10,S-Q表示黑桃Q。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)② 将计算游戏积分所需要属性和操作封装在一个类中,该类命名为Counter。需要特别说明地是 连续标志属性sequence,用于存放玩家当前猜点操作的连续状态:
连续猜中时,sequence 0(连续猜中的次数);
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)连续猜错时,sequence 0(连续猜错的次数);
即未连续猜中,也未连续猜错时,sequence = 0。
③ 根据扑克牌游戏的玩法和规则,将扑克牌游戏设计成一个类。在类的定义中描述该游戏所需要使用的扑克牌集合(container)和所需要的辅助属性,以及满足游戏玩法和 规则的各种操作。我的扑克牌游戏类直观地命名为HiLow。同样,已用牌索引属性usedIndex:指示container中游戏已经使用过的扑克牌的 索引。每盘游戏开始时,该属性应被初始化为0(container的第一个元素的 下标值);以后每次从container获取一张牌(为玩家发牌,取一张被猜的牌) 后,属性值加1。该属性的值域为0=usedIndex =51。玩家牌索引属性playIndex:指示当前玩家手中正在进行猜点操作的牌在container 中的索引。每局游戏开始时,该属性值 = usedIndex+1;以后每次猜点操作完成后, 属性值加1。该属性的值域为0 =playIndex =51。
综上,系统类图如下:
图二 Hi_Low系统类图
至于具体的编码实现请参考源代码例子。
本文示例代码或素材下载