使用name作为RPG的String变量创建对象

时间:2014-01-07 22:52:36

标签: java string object

我正在编写一个RPG,我希望Character对象能够创建控制其“权力”的对象

每个字符都有一个字符串变量powerOne,PowerTwo等。 powerOne =“攻击”

我需要一种方法来做到这一点:

 "powerOne" powerOne = new "powerOne"

(需要计算机使用字符串代替实际功率,因为​​一旦字符学习新功能,它们就会被替换。)

这样,我总能将其余代码中的功能称为powerOne。 防爆。 powerOne.dealDamage()

3 个答案:

答案 0 :(得分:1)

String powerOne = new String(“”);

当他们学习新的“力量”时,

powerOne =“攻击”。

虽然你还不清楚powerOne是什么。它是一个字符串还是它自己的类poweredOne?如果它是一个类,为什么不在这些行上创建一个setName函数呢?虽然我建议在这种情况下制作一个Power类。尝试让你的代码看起来像这样......

Power powerOne = new Power(“Attack!”,10); //假设你使用String // name和int Damage。构建它。

如果我有任何问题,请随时提出帮助。

答案 1 :(得分:0)

听起来你的'权力'是对象,而不是字符串。

制作界面:

public interface Power {
    void dealDamage();
}

然后让所有单独的权力等级(例如Attack等)实施Power interface

然后在您的Character中,您可以拥有ListPower接口派生的对象。

答案 2 :(得分:0)

你应该使用名为CharacterPower的接口,其中包含一个名为dealDamage的方法。

Yould可以将权力的名称保存到String变量中,然后查询一个CharacterPowerFactory,它将使用其名称为您提供正确的CharacterPower实例。

喜欢:

String powerOne = "Attack";

CharacterPower power = CharacterPowerFactory.getInstance().createPower(powerOne);
power.dealDamage();


/**
 * Your factory creating powers based on names.
 */
public class CharacterPowerFactory {
    private static final CharacterPowerFactory SELF = new CharacterPowerFactory();
    private CharacterPowerFactory(){}

    public static CharacterPowerFactory getInstance() {return SELF;}

    public CharacterPower createPower(String powerName) {
        if("Attack".compareTo(powerName) == 0) {
            return new AttackPower();
        }

        return null;
    }
}

/**
 * Your Attack power implementation
 */
public class AttackPower implements CharacterPower {
    public void dealDamage(){
        // Dealing the damage
    }
}

/**
 * Your interface definition
 */
public interface CharacterPower {
    void dealDamage();
}