我正在编写一个RPG,我希望Character对象创建控制其"力量"的对象
每个字符都有一个字符串变量 powerOne、PowerTwo 等,例如 powerOne = "Attack"
我需要一种方法来做到这一点:
"powerOne" powerOne = new "powerOne"
(需要计算机使用字符串代替实际电源,因为一旦字符学习新电源,它们就会被替换。
这样,我始终可以将代码其余部分中的 power 引用为 powerOne。例如,PowerOne.dealDamage()
powerOne = new String(");
当他们学习新的"力量"时,
幂一="攻击"。
虽然你还不清楚什么是力量。它是一个字符串还是它自己的类供电?如果它是一个类,为什么不做一个setName函数或类似的东西呢!尽管我建议在这种情况下创建一个 Power 类。尝试使您的代码看起来像这样...
PowerpowerOne = 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();
}