我正在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;
}
}
这很好,但是。。。我有些问题!
我的问题
我需要一个更通用的游戏操作列表。我不仅要有一个空的列表,还要有一些函数。。另外,我需要有参数和没有参数的方法。
例如:
下降
方法将需要一个Player对象,以便他可以删除该项。这个
检查
方法将需要返回描述项的字符串。
另外,我需要一些在初始化GameActionList时不知道的数据:我在调用方法时首先知道这些数据。。。
所以我有两个问题:
-
如何扩展GameActionList,使其包含一个空洞和函数的列表,并且它们都可以有参数或没有。。(这是否有意义??)
-
我怎样才能在周期的后期给方法提供一些数据,比如调用时?
也。。。这可能是一个非常愚蠢的方法,所以如果你有更优雅的解决方案。。我已经准备好听了
!
谢谢。。。!
拉尔斯