基本上我的问题与此问题相同: Card game with huge amount of cards and complex actions
但我不会说话或理解一个单词" C ++。 这是我的第一个大型java项目,我想实现一个交易卡游戏组件。 我的问题是:我计划使用100多种不同的卡,采取不同的行动。那里有4种主要类型。在这些类型中,卡片的动作类似但仍然不同。 我想过制作一个像
这样的额外课程public class CardActionDatabase {
public void card1Action(){}
public void card2Action(){}
....
}
但问题是,我无法在实际代码中调用/调用它们,如
(playedcard.getName())Action()
因为在编译语言中这是不可能的。 所以基本上我必须"如果"最近打出了所有现有牌的牌,效率低下。
我该如何做到这一点?
答案 0 :(得分:2)
我自己一直在搞乱纸牌游戏,这里有一些选择。因此,一种简单的方法(尽管可能不是最有效的)是:
首先,创建一个包含公共变量和方法的抽象类Card
,例如String name
和public void onPlay()
。然后,您可以为四种类型中的每一种创建另一个抽象子类。
然后,为游戏中的每张唯一卡片创建Card
的子类。这些子类以自己的方式定义onPlay()
。然后在你的玩家转向逻辑中,当玩家选择一张牌时,会调用该牌的onPlay
方法。您甚至可以添加onDiscard
,onDestroy
或onTurnStart
等内容。
您还可以考虑在“卡片”和“场/播放区域”之间创建控制器类。例如,您可能拥有一个HandController
类,其中包含公开方法DiscardRandom()
,Discard(int index)
和Draw()
,这些卡可以用来操纵游戏玩法。
管理适当执行操作所需的调用链可能会变得麻烦和复杂,但强大的文档会有很长的路要走。