我正在用Java创建一个RPG角色表,想想DnD和类似的。
理想情况下,我想要一个类似于此的类:
Modifier modifier = new Modifier(bonusValue, listOfAffectedSkills);
modifier.giveTo(character);
modifier.removeFrom(character);
Modifier[] modifiers = character.getModifiers();
Modifier[] skillModifiers = character.getSkill().getModifiers();
但是,我不知道如何以我可以实现方法giveTo和removeFrom的方式传递listOfAffectedSkills,特别是因为该角色可能具有同一类的许多技能,这应该只影响其中的一小部分。 / p>
答案 0 :(得分:0)
Pepple应该在downvoting之前发表评论...我相信大多数的downvotes是因为我们不知道你的角色类是如何工作的,也不知道你的修饰符,也不知道你的技能。
个人而言,我宁愿拥有character.give(modifier)
和new Modifier(bonusValue,MODIFIER.name_of_skill)
。技能应该是动态的(一个charcater中的HashMap<String nameOfSkill,Skill s>
,并且你应该以相同的方式获得一个奖励修饰符的内部地图。每次你获得一个技能修饰符,你搜索你是否有一个具有相同技能的奖励修饰符名称,然后返回技能修饰符及其奖励修饰符。
答案 1 :(得分:0)
我猜你应该将listOfAffectedSkills实现为
List<ModifiableSkills>
(你也可以让它支持“访客模式”,这将使其更具扩展性,但是现在我们在下面会做什么)。
所以你会:
改性剂:
public class Modifier {
private int statBonus;
private int saveBonus;
private int armorBonus;
// TODO: constructor, etc
public int getStatBonus() {
return statBonus;
}
public int getSaveBonus() {
return saveBonus;
}
public int getArmorBonus() {
return armorBonus;
}
}
ModifiableSkills(支持使用Modifier修改的界面):
public interface ModifiableSkills {
void modify(Modifier modifier);
}
实现使用修改器修改自身能力的示例技能,您可以使用其他一般应用的技能类型:
public class WarriorSkills implements ModifiableSkills {
private int str;
private int armor;
private int save;
void modify(Modifier modifier) {
str += modifier.getStatBonus();
armor += modifier.getArmorBonus();
save += modifier.getSaveBonus();
}
}
这应该让你开始。