我正在为yu-gi-oh决斗构建一个简单的c ++平台,但我发现了卡片效果的问题。由于几乎每张卡都有不同的效果,这意味着我必须在每张卡上写一个不同的功能。 有什么方法你可以想到让这更容易,还是我必须为游戏的每张卡写一个函数?y
答案 0 :(得分:1)
无论如何,你必须以某种方式实施每一种效果。将它们放入不同的功能,甚至不同的类,可以帮助您组织代码。将函数标题视为内联提醒自我:“这里开始实现这个特定的块”。
换句话说,不要保存功能。你以后会感谢你自己。
理论上可以将所有效果放在一个巨大的函数中,但在任何有意义的意义上它都不会“更容易”,尤其是从长远来看。
阅读一些关于编程的书。 StackOverflow不是一所学校。 Steve McConnell的“Code Complete”(ISBN 1556154844)很好。
答案 1 :(得分:0)
听起来像是设计模式的工作。我不太熟悉yu-gi-oh但是我相信你能达到你想要的效果。这些方法需要您使用一些好的面向对象编程。以下是一些可能对您有所帮助的起始模式:
策略模式(查找常见类型的“卡片效果”,如损坏或陷阱等,并扩展功能): http://sourcemaking.com/design_patterns/strategy/cpp/1
装饰器模式(如果一个效果会做很多不同的事情,其中一些效果类似于其他“卡片效果”,你可以使用装饰器模式将来自另一张卡片的伤害效果与睡眠效果结合起来申请此卡等): http://sourcemaking.com/design_patterns/decorator
无论哪种方式,从任何在线资源中学习这些模式都是非常困难的。如果这听起来像你感兴趣的话,我会建议你出去拿一本好的设计模式书。不幸的是我对c ++的设计模式书没有任何好的建议。