Java 桌面RPG的Buff和debuff系统

Java 桌面RPG的Buff和debuff系统,java,Java,我正在用Java制作一个RPG字符表,想想DnD和类似的东西 理想情况下,我希望有一个类可以做类似的事情: Modifier modifier = new Modifier(bonusValue, listOfAffectedSkills); modifier.giveTo(character); modifier.removeFrom(character); Modifier[] modifiers = character.getModifiers(); Modifier[] skillMo

我正在用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方法的方式通过有效技能列表,特别是因为角色可能有许多相同级别的技能,这应该只影响其中的一小部分。

人们应该在投票前发表评论。。。我相信大多数的反对票是因为我们不知道你的角色类是如何工作的,也不知道你的修饰语,也不知道你的技能


就个人而言,我更希望有一个
角色。给予(修饰语)
,和
新修饰语(bonusValue,修饰语。技能名称)
。技能应该是动态的(a
HashMap
在charcate中,您应该以相同的方式拥有奖金修改器的内部映射。每次获得技能修改器时,您都会搜索是否有具有相同技能名称的奖金修改器,然后返回带有奖金修改器的技能修改器。

我想您应该实现以下效果技能列表:

List<ModifiableSkills>
ModifiableSkills(支持使用修改器进行修改的界面):

示例技能实现了使用修饰符修改自身的功能,您可以有其他可以一般应用的技能类型:

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();
    }
}
这应该让你开始

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();
    }
}