模拟简单猜扑克牌大小的 Win32 控制台游戏

大帅824

大帅824

2016-02-19 16:40

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的模拟简单猜扑克牌大小的 Win32 控制台游戏,过去的都会过去,迎接崭新的开始,释放更美好的自己。

  在坛子里经常能看到MFC编制的GUI游戏,功能强大,界面美观,人机交互便利等优点是控制台程序是无可比拟的.但对于刚初步了解 C/C++的朋友们是无法短期内能学会编写MFC游戏的。于是小弟采用 Win32 控制台 项目做了一个C++的小游戏,希望对于那些朋友,对大一, 大二的学生编写字符界面的小程序有所帮助。

  该游戏的名称不妨命名为Hi(gh)-Low,其玩法和规则如下:

  1、玩法

①洗牌:每盘游戏开始之前,使扑克牌的排列顺序充分随机; ②发牌:每局开始时,从未使用的扑克牌集合中顺序发给玩家5张扑克牌(明牌); ③猜点:从未使用的扑克牌集合中按顺序取出一张扑克牌(即庄家的暗牌),要求玩家将手中的第一张扑克牌和这张庄家的暗牌进行比较,确定哪张牌大? ④积分:玩家确定回答后,翻开被猜的扑克牌(暗牌变成明牌),同时根据玩家回答的正确与否显示相应的提示,并为玩家的游戏成绩积分。然后将这两张 已经比较过的牌回收到已经使用过的扑克牌集合中,玩家手中的下一张克牌成为新的一张扑克牌; ⑤对玩家手中剩余的扑克牌顺序重复第③和④步操作,直至玩家手中不再有剩余的扑克牌时,一局游戏结束; ⑥如果未使用的扑克牌集合中的扑克牌数目多余10张,则从第②步开始进行本盘游戏的下一局; ⑦询问玩家是否继续进行下一盘游戏,如果继续,则从第①步开始进行新的一盘游戏;

  2、规则

①积分规则:

  1)、猜中1次,积1分;猜错1次,不积分。

  2)、1局中连续猜中3次,除正常积分外奖励1分;连续猜错3次,罚1分。

  3)、1局全部猜中,除正常积分外奖励3分;1局全部猜错,罚3分。

  4)、玩家的最低积分为0,即不出现负分。 ② 牌面大小比较规则:每张扑克牌的牌面由花色(梅花Club、方块Diamond、红心Heart和黑桃Spade)和牌点(A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K)组成。

  确定两张扑克牌牌面大小的规则有两条:

1)、如果两张牌面的牌点不同,则牌面大小仅与牌点有关,而与牌面的花色无关。牌点的大小顺序为:

  2 3 4 5 6 7 8 9 10 J Q K A 2)、如果两张牌面的牌点相同,则牌面大小仅与牌面的花色有关。花色的大小顺序为:Club Diamond Heart Spade。

  程序运行后主界面如下:

  图一 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系统类图

  至于具体的编码实现请参考源代码例子。

本文示例代码或素材下载

展开更多 50%)
分享

猜你喜欢

模拟简单猜扑克牌大小的 Win32 控制台游戏

编程语言 网络编程
模拟简单猜扑克牌大小的 Win32 控制台游戏

tc编译的dos程序和vc编译的win32控制台程序的异同

编程语言 网络编程
tc编译的dos程序和vc编译的win32控制台程序的异同

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

《看门狗》扑克牌游戏赢牌玩法解析分享

游戏动漫
《看门狗》扑克牌游戏赢牌玩法解析分享

Photoshop合成魔法火焰的扑克牌

PS
Photoshop合成魔法火焰的扑克牌

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Photoshop合成吹掉扑克牌效果

PS
Photoshop合成吹掉扑克牌效果

PS合成吹走的扑克牌图案效果

PS
PS合成吹走的扑克牌图案效果

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

定制调试诊断工具和实用程序(1)

定制调试诊断工具和实用程序(1)

ATL的GUI程序设计(3)

ATL的GUI程序设计(3)
下拉加载更多内容 ↓