使用 name 作为 RPG 的字符串变量创建对象



我正在编写一个RPG,我希望Character对象创建控制其"力量"的对象

每个字符都有一个字符串变量 powerOne、PowerTwo 等,例如 powerOne = "Attack"

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

 "powerOne" powerOne = new "powerOne"

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

这样,我始终可以将代码其余部分中的 power 引用为 powerOne。例如,PowerOne.dealDamage()

String

powerOne = new String(");

当他们学习新的"力量"时,

幂一="攻击"。

虽然你还不清楚什么是力量。它是一个字符串还是它自己的类供电?如果它是一个类,为什么不做一个setName函数或类似的东西呢!尽管我建议在这种情况下创建一个 Power 类。尝试使您的代码看起来像这样...

Power

powerOne = new Power("Attack!",10);//假设你用字符串//name 和 int Damage 来构造它。

随时提出任何问题,我非常乐意提供帮助。

听起来你的"力量"是物体,而不是字符串。

制作一个接口:

public interface Power {
    void dealDamage();
}

然后让您所有单独的功率类(例如Attack等)实现Power interface

然后在Character 中,您可以拥有从Power接口派生的对象List

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

你可以将电源的名称保留到一个字符串变量中,然后查询一个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();
}

最新更新