这很难解释,但我正在制作流行的在线纸牌游戏Hearthstone(与MTG非常相似的机制)的(坏)克隆,并且游戏中的很多牌都有特殊效果。例如,某张牌可能会对随机小兵做出4点伤害"或者另一张牌可能会说"摧毁一个随机的小兵"。我想将卡片及其效果存储在程序之外,以减少编程中的混乱。我正在使用处理(基本上是java)来编写它,因为我还不擅长摇摆。我目前将每张卡存储在一个文本文件中(具有健康和防御等属性),然后在另一个文本文件中有一个卡的主列表。我将如何创建一种灵活的方式来调用卡片的效果?我考虑使用允许我解释卡片文件中的命令的程序,但这对我来说似乎有些过分。如果没有一堆方法和一个选择运行的大型逻辑块,我不确定下一步该去哪里。我正在考虑给每张卡片上课,并让这门课程扩展到原来的卡片课程,但我不知道如何在处理过程中这样做。
答案 0 :(得分:0)
我最好的选择是尝试工厂设计模式。它利用了java的面向对象的能力。
什么是工厂设计模式? 理论上它包括三个类。 Card类,CardFactory类以及将所有内容放在一起的客户端类。
您可以通过CardFactory类中的一系列if / else语句创建一种灵活的方式来调用卡片的效果。根据收到的String cardEffect,创建并返回该卡类对象。
看起来像这样:
public class CardFactory{
public Card produceCard(String cardEffect){
if("support".equalsIgnoreCase(cardEffect))
return new CardSupport();
if("oppose".equalsIgnoreCase(cardEffect))
return new CardOppose();
if(cardEffect == null)
return null;
else
return null;
}
对于卡类,也许应用字段变量可能会产生排名,如排名,HP,atck,def,Effect。
看起来像这样:
public class Card{
private int rank, hp, atck, def;
private Effect effect;
public Card(int rank, int hp, int atck, int def, Effect effect){
this.rank = rank;
this.hp = hp;
this.atck = atck;
this.def = def;
this.effect = effect;
}
您需要自己尝试编写效果类,但我相信它会很快完成。