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