我在ASP.NET中创建一个较小的RPG游戏。在这个游戏中,我有一个项目架构,每个项目都有一些方法。例如,所有项目都应该共享“删除”,“检查”和“使用”等方法。有些项目必须使用“操作”,“计算”等方法进行扩展。
到目前为止,我已经创建了以下对象GameActionList:
public delegate void MyDelegate();
public class GameActionList
{
public List<MyDelegate> Items = new List<MyDelegate>();
public void Add(MyDelegate del)
{
Items.Add(del);
}
public void CallDelegates()
{
foreach (MyDelegate myDelegate in Items)
{
myDelegate();
}
}
}
我有一个BaseItem类,它有这个GameActionList。 BaseItem类中的get属性是这样的:
public GameActionList Actions
{
get
{
GameActionList actions = new GameActionList();
actions.Add(this.Drop);
actions.Add(this.Examine);
return actions;
}
}
这很好,但是......我有一些问题!
我的问题
我需要一种更通用的GameActionList方式。我需要有一个列表,不仅有空洞,还有函数。另外,我需要两个带参数的方法,没有参数。
例如: Drop 方法需要一个Player对象,因此他可以删除该项。 检查方法需要返回描述该项目的字符串。
另外,我需要一些我在初始化GameActionList时不知道的数据:我在调用方法时首先知道这些数据......
所以我有两个问题:
另外......这可能是一种非常愚蠢的方式,所以如果你有一些更优雅的解决方案..我已经准备好听到它了!
非常感谢......! 拉斯