C# RPG风格游戏中的OOP设计技巧附加效果

C# RPG风格游戏中的OOP设计技巧附加效果,c#,oop,C#,Oop,创建一个与RPG相关的程序,我想为我的角色技能添加各种附加效果(随着时间的推移造成的伤害、buff等) 到目前为止,我做了一些类似的事情(C#语法) 我有两个问题 首先,如果我需要更改属性,IStrategy实现如何知道我的字符属性?(例如,如果我想降低或增加Paladin()中设置的属性之一) 第二,我如何处理execute()的多种可能的返回类型,这取决于我将实现的效果?有一个问题,以防您觉得它有帮助。@gms0ulman我认为这是一个一般的OOP设计问题,可以在我自己之后帮助其他人。RPG

创建一个与RPG相关的程序,我想为我的角色技能添加各种附加效果(随着时间的推移造成的伤害、buff等)

到目前为止,我做了一些类似的事情(C#语法)

我有两个问题

首先,如果我需要更改属性,
IStrategy
实现如何知道我的
字符
属性?(例如,如果我想降低或增加
Paladin()
中设置的属性之一)


第二,我如何处理
execute()
的多种可能的返回类型,这取决于我将实现的效果?

有一个问题,以防您觉得它有帮助。@gms0ulman我认为这是一个一般的OOP设计问题,可以在我自己之后帮助其他人。RPG风格的例子,让每个人都更容易理解,但我本可以用金融股票衍生品来理解。@YthioCsi我同意这是一个好问题(+1'd)-这只是一个我误解的问题。我很抱歉。有一个问题,以防你觉得它有帮助。@gms0ulman我认为这是一个一般的OOP设计问题,可以在我自己之后帮助其他人。RPG风格的例子,让每个人都更容易理解,但我本可以用金融股票衍生品来理解。@YthioCsi我同意这是一个好问题(+1'd)-这只是一个我误解的问题。我道歉。
public class Paladin : Character
{
   public Paladin()
   {
      BaseMP = 7080;
      caster = false;
      baseGCD = 2.43;
      aadelay = 2.24;
      aapotency = AAPotency.Attack;

      Moveset = new List<IMove>()
      {
        new Weaponskill("Fast Blade", "", 150, 150, false, false, baseGCD, null),
        new Weaponskill("Riot Blade", "Fast Blade", 100, 230, false, false, baseGCD, new RiotBlade_Effect()),
        new Weaponskill("Goring Blade", "Riot Blade", 100, 240, false, false, baseGCD, new DoT(50, 24)),
        new Spell("Holy Spirit", 430, 1440, false, 2.5, null),
        new Ability("Requiescat", 350, true, 60, false, new Requiescat_Effect()),        
      };
    }
}
 public interface IStrategy
 {
   void execute();
 }

 public class RiotBlade_Effect : IStrategy
 {
     public RiotBlade_Effect()
     {

     }

     public void execute()
     {

     }
}