2017-08-02 78 views
-2

我想提出一個RPG字符表在Java中,想了免打擾和類似的。淺黃色和DEBUFF系統桌面RPG

理想情況下,我想一個類,做類似這樣:

Modifier modifier = new Modifier(bonusValue, listOfAffectedSkills); 
modifier.giveTo(character); 
modifier.removeFrom(character); 

Modifier[] modifiers = character.getModifiers(); 
Modifier[] skillModifiers = character.getSkill().getModifiers(); 

但是,我不知道該怎樣打發listOfAffectedSkills在某種程度上我可以實現方法giveTo和removeFrom線索,特別是因爲角色可能擁有同一班級的許多技能,這隻會影響其中的一小部分。

回答

0

Pepple應該把downvoting之前評論...我相信大多數downvotes是因爲我們不知道你的性格類作品,和你的改性劑,也不是你的技能。

個人而言,我寧願有一個character.give(modifier)new Modifier(bonusValue,MODIFIER.name_of_skill)。技能應該是動態的(在charcater一個HashMap<String nameOfSkill,Skill s>,你應該有獎金修改的內部地圖以同樣的方式。每次你得到一個技能修改的時候,你是否有同樣的技能名獎金修改搜索,然後返回技能修改其獎金修改。

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(接口支持與修改器修改能力):

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

這應該讓你開始。