第 14 章 包含其他对象的对象

有了表示单张扑克牌和整副牌的类后,我们用它们来开发一款游戏! Crazy Eights 是一款经典的扑克牌游戏,可供两个或更多人一起玩。玩家的主要目标是最先把手里的牌出完。这个扑克牌的玩法如下。

  • 给每个人发 5 张或更多的牌,再发一张牌并将其翻开,作为弃牌堆的第一张牌。将余下的牌面朝下,作为储备牌。

  • 每个人轮流出一张牌到弃牌堆。出的牌必须与前一张牌的点数或花色相同,或者为万能牌 8。

  • 如果没有匹配的牌或 8 可出,玩家就必须从储备牌中取牌,直到取到匹配的牌或 8。

  • 储备牌取光后,就对弃牌堆进行洗牌(最上面的那张除外),并将其用作储备牌。

  • 一旦有人出完了手中的牌,游戏便结束,并对其他人罚分。罚多少分是根据手上余下的牌计算的:8 为 20 分,花牌 10 分,其他牌与其点数相同。

要想获悉更详细的细节,可参阅 https://en.wikipedia.org/wiki/Crazy_Eights;但前面的介绍已足够详细,可以开始编写这款游戏了。

本章的示例代码位于本书代码仓库的目录 ch14 中,有关如何下载这个仓库,请参阅前言中的“使用示例代码”一节。