【问题标题】:Solitaire game design [closed]纸牌游戏设计[关闭]
【发布时间】:2009-11-20 19:41:37
【问题描述】:

我想为我的项目用 C++ 构建一个纸牌游戏。

这是我想出的:卡片类属性/成员:套装,等级,颜色(所有这些都可以是枚举)动作/功能:翻转卡片,比较卡片,打印卡片规则类:将包含规则游戏并验证每个用户的操作/命令以检查它是否被允许。命令类:我认为这不一定是一个类。也可以是一个枚举。基类 CardPile。拥有更多从 CardPile 派生的类,例如 DealPile、Temporary Pile、DestinationPile、TablePile。我不清楚的是类之间的关系。

谢谢!

【问题讨论】:

  • 我礼貌地建议您对自己设计的设计有更清晰的理解,而不是用勺子喂给您的设计。
  • 我不会过度使用您的“建模”。有许多开源参考资料。胶水是 GUI 修改更“抽象”的卡片,这些卡片放在成堆或堆叠等中......确定它们如何组合在一起的最好方法就是编写该死的东西!
  • 我会给你怀疑的好处;也许你在这方面做了更多的工作,只是想在这里快速发表一篇文章。如果你做的工作比你说的多,请张贴。否则,这只会​​读作“这很难,我现在不想尝试”......这就是大多数人会接受的方式。
  • 与其把你能想到的每一个与纸牌相关的单词都扔掉,不如试着把它当作一个真正的游戏来思考。将每张卡片作为一个对象是有意义的——它的等级、花色和颜色等将是类中的数据成员(就像它们是真实卡片上的信息一样)。慢慢来,你将能够想出一个像样的设计......除非这是在 10 分钟内完成的,在这种情况下,你最好打电话给你的教授并想出一些蹩脚的借口!
  • 如果你还在,AgentHunt,看看我在下面写的。我认识你的发展方式,因为我也是这样开始的。它被称为面向对象编程,它使新程序员认为他们应该从创建一堆对象开始,然后将它们串在一起。我多年来的经验是,这只会造成混乱。一个对象对你的程序没有用处,除非它某事。

标签: project


【解决方案1】:

你需要一张卡片的代表,它可以保存卡片的价值和花色。

您还需要一个数据结构来表示一叠卡片。

从那里开始,构建 GUI 应该不会那么具有挑战性。这是一个非常简单的项目,而且您的想法似乎是正确的。

【讨论】:

  • 是的,我没想过用数据结构来表示卡片堆。我在考虑不同种类的甲板/桩。但也许我可以有一个单独的数据结构并在甲板/桩中使用它。谢谢
【解决方案2】:

考虑一下,与其做一堆前期设计,不如专注于创造可行的东西。您的程序需要做什么?

它需要洗牌,所以设计一种方法来表示 52 张牌并洗牌。这很容易实现,但它是一个很好的起点。

然后你需要布置卡片。所以想出一种方法来布置卡片并将其余的放在抽牌堆中。

等等。与其分析对象,不如关注行为。仅根据需要创建对象以支持程序的行为。这将帮助您避免在分析和过多代码中迷失方向,并确保您的程序实际上可以做一些有用的事情。

(如果你需要在做任何事情之前上交你的设计怎么办?没问题;按照我上面描述的方式进行你的思考。实现将留待以后,但即使只是思考上述例程如何工作比设计一堆对象而不知道如何处理它们更有价值。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2014-05-18
    • 2013-11-02
    相关资源
    最近更新 更多